修改表asp.net

时间:2011-06-15 21:10:07

标签: c# asp.net

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

    <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);
    }

3 个答案:

答案 0 :(得分:1)

你的问题是asp.net处理动态控件的复杂方式,你需要在设置视图状态之前在页面init上创建动态控件,以便在帖子上维护控件的状态,请参阅本文{ {3}}

你应该看看网格视图或至少一个转发器控件。

答案 1 :(得分:0)

我只是将一个问题列表和DataBind它们绑定到repeater / gridview / datagrid(如@Cyber​​nate所说),然后将一个Event方法添加到数据仓的OnItemDataBound。

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

当用户填写所有答案时,您只需要通过Request.Form数组并找到将要传回的所有答案。

答案 2 :(得分:0)

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