如何动态改变gridView 中绑定列的绑定表达式(DataField)? 同一个gridView在不同条件下会绑定两个不同的dataTable,我如何实现这种绑定?比如一开始我设置了绑定列DataField=”id“,将第一个含有id 列的dataTable 成功绑定,但是在另一种情况下我要在将另一个dataTable的"name"绑定上去,但是怎样将DataField=”id“改为DataField=”name“? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实需求很简单,就是先从一个table里绑定,如果这个table的值经过各种条件筛选后,table 没有记录了,就从另外一张table里绑定,这两个table的结构截然不同。我想问一下,如果第一个table有8列(对应于gridView就是3个绑定列,5个模板列,下同),我在gridView中写了8个表达式,同时还设置了DataKeysName 的属性,但是第2个 table只有3个绑定列,这样绑定是否会报错? this.GridView1.DataKeyNames = new string[] { "name" }; 需求不是你做的过程,你的思路,而是你要达到的效果。像你这个说的,如果这个table的值经过各种条件筛选后,table 没有记录了,就从另外一张table里绑定,这两个table的结构截然不同。如果你贸然更改数据源,第二个表中根本就没有你在GritView中绑定的字段,怎么能不出错呢? 是可以的。所以需要datakeyNames zhuanshen712 说的是我的意思,要想更改数据源,就要将他绑定的字段也一起更改,问题是怎么改?请huming_h 说得详细一点。datakeyNames 我已经设置好了! this.GridView1.Columns.Clear();//第二个表绑定 GridView1.DataSource=Table2; this.GridView1.AutoGenerateColumns = true;GridView1.DataBind(); 谢谢 zhuanshen712 ,但是绑定列可以AutoGenerate,但是模板列怎么办? 依我看,这么麻烦的改造还不如将两个表的数据绑定到两个GridView,利用显示和隐藏来做呢。 protected void Button1_Click(object sender, EventArgs e) { this.GridView1.DataKeyNames = new string[] { "id"}; DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("id")); dt.Columns.Add(new DataColumn("name")); for (int i = 0; i < 10; i++) { DataRow row = dt.NewRow(); row[0] = i.ToString(); row[1] = i.ToString() + i.ToString(); dt.Rows.Add(row); } this.GridView1.DataSource = dt; this.GridView1.DataBind(); } protected void Button2_Click(object sender, EventArgs e) { this.GridView1.Columns.Clear(); this.GridView1.DataKeyNames = new string[] { "name" }; DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("name")); dt.Columns.Add(new DataColumn("sex")); for (int i = 0; i < 10; i++) { DataRow row = dt.NewRow(); row[0] = i.ToString()+i.ToString(); row[1] = i.ToString() + i.ToString()+i.ToString(); dt.Rows.Add(row); } this.GridView1.DataSource = dt; this.GridView1.DataBind(); }以上是我两个button的事件,分别绑定不同的两张表,第一张表里可以有模版列,就是在gridview里面设置好的模板,如果第二张表也需要用到模板列,比较麻烦一点。 谢谢 huming_h ,但是 我点击button 2 后再也绑定不了 button1.其实我的问题就是如何用代码给gridView 添加 模板列! 很简单啊 你给id和name在sql去相同的别名d 然后你根据需要选择不同的 sql就可以了 asp.net 执行1个update 出错 熟悉.net和java的朋友帮我下,谢谢! asp.net缓存问题 reporting service安装问题 复制文件问题: 反斜杠与斜杠的转换(等待中)...) asp.net网站空间的问题 如何在webconfig设置窗体验证 當某個TextBox失去焦點後, 如何從數據庫中找出相關的數據, 并自動填寫到其他TextBox中. 颜色如何比较?查了半天资料没查着! VISTA 下 安装 SQL2005 服务器名 为空。 怎么办 QQ各个网页里面的那种DIV弹出式登录
像你这个说的,
如果这个table的值经过各种条件筛选后,table 没有记录了,就从另外一张table里绑定,这两个table的结构截然不同。
如果你贸然更改数据源,第二个表中根本就没有你在GritView中绑定的字段,怎么能不出错呢?
请huming_h 说得详细一点。datakeyNames 我已经设置好了!
//第二个表绑定
GridView1.DataSource=Table2;
this.GridView1.AutoGenerateColumns = true;
GridView1.DataBind();
{
this.GridView1.DataKeyNames = new string[] { "id"};
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("id"));
dt.Columns.Add(new DataColumn("name"));
for (int i = 0; i < 10; i++)
{
DataRow row = dt.NewRow();
row[0] = i.ToString();
row[1] = i.ToString() + i.ToString();
dt.Rows.Add(row);
}
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
this.GridView1.Columns.Clear();
this.GridView1.DataKeyNames = new string[] { "name" };
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("name"));
dt.Columns.Add(new DataColumn("sex"));
for (int i = 0; i < 10; i++)
{
DataRow row = dt.NewRow();
row[0] = i.ToString()+i.ToString();
row[1] = i.ToString() + i.ToString()+i.ToString();
dt.Rows.Add(row);
}
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
以上是我两个button的事件,分别绑定不同的两张表,第一张表里可以有模版列,就是在gridview里面设置好的模板,如果第二张表也需要用到模板列,比较麻烦一点。
但是 我点击button 2 后再也绑定不了 button1.
其实我的问题就是如何用代码给gridView 添加 模板列!