datatable columns not accessible C# ASP.NET
我有这个数据表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public partial class class1 { private DataTable dt; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { dt.Columns.Add("Col1", System.Type.GetType("System.String")); dt.Columns.Add("Col2", System.Type.GetType("System.String")); bind(); } } } private void bind() { //database call //loop dt.Rows.Add(col1_value.ToString(), col2_value.ToString(), col3.ToString()); // populate the dropdown list with the database entries } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { DataRow[] datarow; variable1= DropDownList1.SelectedValue; datarow = dt.Select( dt.Columns["col1"] + DropDownList1.SelectedValue); variable2 = datarow.GetValue(1).ToString(); } |
当调用 selectedindexchange 事件时,会在该行显示错误
我想避免将数据表存储在会话或视图状态中。另外,问题是为什么数据表会变空。有没有办法避免重新填充数据表所有有回发的东西?
如果我有一个字符串类变量在回发后不为空或不为空。
删除
可能是因为你的情况(
您应该摆脱这种情况或在另一个地方填充您的数据表(甚至可能是您的 indexchanged 事件的事件处理程序)。
您正在以编程方式在 Page_Load 事件中添加列。 SelectedIndexChanged 事件会导致回发,并且您在 Page_Load 中的逻辑仅在请求不是回发时添加列。这意味着不会在每次回发时重新添加列,如果您想以编程方式添加它们,则必须添加这些列。