我在usercontrol里面有一个gridview。我新建了这个gridview,它定义为usercontrol构造函数中的一个类字段。在Page_Init中我设置了必要的属性,如ID,Width等。我还将网格添加到同一事件中usercontrol的Control集合中。我也有一个重定向属性和方法,这里是相关的:
public void DataBind()
{
_grv.DataBind();
}
//here is the datasource
public object DataSource
{
get{ return _grv.DataSource; }
set{ _grv.DataSource = value; }
}
我在我的网页中调用了这样的数据绑定成员:
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
return;
DataTable table = new DataTable();
DataColumn col1 = new DataColumn();
DataColumn col2 = new DataColumn();
DataColumn col3 = new DataColumn();
table.Columns.Add(col1);
table.Columns.Add(col2);
table.Columns.Add(col3);
DataRow row1 = table.NewRow();
DataRow row2 = table.NewRow();
DataRow row3 = table.NewRow();
row1[0] = "row1";
row1[1] = "value";
row1[2] = "amount";
row2[0] = "row2";
row2[1] = "no value";
row2[2] = "no amount";
row3[0] = "row3";
row3[1] = "values";
row3[2] = "amounts";
table.Rows.Add(row1);
table.Rows.Add(row2);
table.Rows.Add(row3);
ucManagement.DataSource = table;
ucManagement.DataBind();
}
但是在回发时_grv.DataSource
为空。怎么了?
答案 0 :(得分:1)
一旦GridView绑定dataSource(将该源中的所有数据复制到控件或其他任何用于显示数据的内容),它就不再需要原始的dataSource。它不会保留它不需要的重复数据。如果您愿意,Magnus已经展示了如何自己保留数据。如果只有少量数据,有时可以重新生成数据。
我只是想强调,这与将gridview包装在用户控件中无关,或者某种方式可能会误用它。这就是设计工作的方式。
据我所知,没有任何属性或设置可以改变这种行为。