C# 在asp.net中修改表
我正在尝试获取一个应用程序,允许用户为数字行选择一些内容,然后在用户提交表单后在服务器端执行一些操作。我遇到的问题是,如果我重新加载表,我只会得到默认值,如果我没有,表是空的。代码如下:C# 在asp.net中修改表,c#,asp.net,C#,Asp.net,我正在尝试获取一个应用程序,允许用户为数字行选择一些内容,然后在用户提交表单后在服务器端执行一些操作。我遇到的问题是,如果我重新加载表,我只会得到默认值,如果我没有,表是空的。代码如下: <asp:Table ID="tbl" runat="server"> <asp:TableRow> <asp:TableHeaderCell>Question</asp:TableHeaderCell>
<asp:Table ID="tbl" runat="server">
<asp:TableRow>
<asp:TableHeaderCell>Question</asp:TableHeaderCell>
<asp:TableHeaderCell>Answer</asp:TableHeaderCell>
</asp:TableRow>
</asp:Table>
c:
我只需要制作一个问题列表并将它们数据绑定到repeater/gridview/datagrid,正如@Cybernate所说的那样,然后将事件方法添加到databinder的OnItemDataBound中 在ItemDataBound事件中,我将获得每个问题DataItem的答案列表,并将它们添加到DropDownList中,就像上面所做的那样
当用户填写所有答案时,您只需浏览Request.Form数组并找到所有将要传回的答案。您的问题在于asp.net处理动态控件的复杂方式,您需要在page init上创建动态控件,在设置视图状态以便在post上维护控件的状态之前,请参阅本文
您应该定义查看gridview或至少一个repeater控件。您将表存储在ViewState中,并根据需要使用它。为什么不使用gridview或DataGrid?这对您的PRBLM来说是一个更好的解决方案问题是,即使我尝试在init中打印tbl.row.count,我也只获取硬编码的值,而不是动态创建的值,因此它总是返回1。在init中,控件状态没有从viewstate更新,如果您在save button click事件中执行tbl.row.count,则控件状态将正确设置。当我尝试将表添加到viewstate时,我不断收到序列化异常
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);
}