modifying a table asp.net

本文关键字:net asp table modifying | 更新日期: 2023-09-27 17:59:10

我正试图让一个应用程序允许用户为数行选择一些内容,然后在用户提交表单后在服务器端执行一些操作。我遇到的问题是,如果我重新加载表,我只会返回默认值,如果我不重新加载,则表为空。这是代码:

    <asp:Table ID="tbl" runat="server">
        <asp:TableRow>
            <asp:TableHeaderCell>Question</asp:TableHeaderCell>
            <asp:TableHeaderCell>Answer</asp:TableHeaderCell>
        </asp:TableRow>
    </asp:Table>

c#:

    protected System.Web.UI.WebControls.Table tbl1;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            init_tbl();
        }
    }
    protected void init_tbl()
    {
        tbl1.BorderWidth = 1;
        TableRow tr = new TableRow();
        tc = new TableCell();
        tc.Text = "text";
        tc.BorderWidth = 1;
        tr.Cells.Add(tc);
    ddl = new DropDownList();
    ddl.ID = "r" + index;
    ddl.Attributes["runat"] = "server";
    ListItem item;
    for (int i = 1; i <= 10; i++)
    {
         item = new ListItem();
         item.Text = i.ToString();
         item.Value = i.ToString();
         if (i.ToString().Equals(r.Trim()))
         {
             item.Selected = true;
          }
          ddl.Items.Add(item);
      }      
      list.Add(ddl);
      tc.Controls.Add(ddl);
      tc.ID = "tblr" + index;
      tr.Cells.Add(tc);
      tbl1.Rows.Add(tr);
    }

modifying a table asp.net

您的问题是asp.net处理动态控件的复杂方式,您需要在页面init上创建动态控件,然后设置视图状态,以便在帖子中维护控件的状态,请参阅本文http://geekswithblogs.net/shahed/archive/2008/06/26/123391.aspx.

你应该明确地查看网格视图,或者至少查看一个中继器控件。

我只需要列出一个问题列表,并将它们数据绑定到中继器/gridview/datagrid(正如@Cybernate所说),然后将Event方法添加到数据绑定器的OnItemDataBound中。

在ItemDataBound事件中,我会得到每个问题DataItem的答案列表,并像上面所做的那样将它们添加到DropDownList中。

当用户填写完所有答案后,您只需要浏览Request.Form数组,即可找到将返回的所有答案。

您将表存储在ViewState中,并根据需要使用它。