100分求解 gridview 绑定 刷新问题

cwlcwr 2010-10-27 07:39:14
功能描述:
同一页面 上部选择Agridview的某些记录行
暂存ArrayList中 并绑定到同一页面中另外一Bgridview 显示出来
同一页面有一个dropdownlist 控制Agridview的显示内容
当dropdownlist 第一次触发事件
Agridview显示出内容 选择其数据条目 在Bgridview 显示出来没问题

********************
当dropdownlist 第二次以及以后触发事件Agridview显示出内容 选择其数据条目后
Bgridview 显示的数据条目已替代第一次选择的数据条目

如何解决 使Bgridview 不替代之前的的数据 而是继续累加进去??????????

-------------------------------------------------------------------
附CODE

DAL dal = new DAL(); IList list = new ArrayList(); IList listALL = new ArrayList();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();

// Button1.Attributes.Add("onclick", "javascript:return confirm('确认?')");
}
}
protected void DDL_Plant_SelectedIndexChanged(object sender, EventArgs e)
{
BindGrid();
}
protected void Button1_Click(object sender, EventArgs e)
{
//Response.Redirect("Message.aspx?msg=" + HttpUtility.UrlEncode("制定成功!"), false);


for (int i = 0; i < GridView1.Rows.Count; i++)
{
// MacObject d = new MacObject((GridView1.Rows.Count + 1).ToString());
HtmlInputCheckBox checkBox = (HtmlInputCheckBox)GridView1.Rows[i].Cells[0].FindControl("id");

if (checkBox != null && checkBox.Checked)
{
// IList list = new ArrayList();
MacObject d = new MacObject("1");
d.M_ID = GridView1.DataKeys[i].Value.ToString();
d.Mac_Name = GridView1.Rows[i].Cells[1].Text.ToString();
d.Mac_xxName = GridView1.Rows[i].Cells[2].Text.ToString();
d.Mac_UsePosition = GridView1.Rows[i].Cells[3].Text.ToString();
d.Mac_Body = GridView1.Rows[i].Cells[4].Text.ToString();
d.Mac_JCZQ = GridView1.Rows[i].Cells[5].Text.ToString();

d.JCSD_DL = ((CheckBox)GridView1.Rows[i].Cells[6].Controls[1]).Checked;
d.JCSD_TS = ((CheckBox)GridView1.Rows[i].Cells[7].Controls[1]).Checked;
d.JCSD_DJGZ = ((CheckBox)GridView1.Rows[i].Cells[8].Controls[1]).Checked;
d.JCSD_ZD = ((CheckBox)GridView1.Rows[i].Cells[9].Controls[1]).Checked;
d.JCSD_FR = ((CheckBox)GridView1.Rows[i].Cells[10].Controls[1]).Checked;

d.Mac_CKname = GridView1.Rows[i].Cells[11].Text.ToString();


list.Add(d);
GridView2.DataSource = list;
GridView2.DataBind();
}


}




/**

CheckBox b = (CheckBox)row.Cells[6].Controls[1];
d.JCSD_DL = b.Checked;


// d.JCSD_DL = ((CheckBox)row.Cells[6].Controls[1]).Checked;





d.JCSD_TS = Convert.ToBoolean(row.Cells[7].Text.ToString());
d.JCSD_DJGZ = Convert.ToBoolean(row.Cells[8].Text.ToString());
d.JCSD_ZD = Convert.ToBoolean(row.Cells[9].Text.ToString());
d.JCSD_FR = Convert.ToBoolean(row.Cells[10].Text.ToString());

/**
d.Mac_Name = ((TextBox)row.FindControl("设备名称")).Text;
d.Mac_xxName = ((TextBox)row.FindControl("设备详细名称或编号")).Text;
d.Mac_UsePosition = ((TextBox)row.FindControl("使用地点")).Text;
d.Mac_Body = ((TextBox)row.FindControl("点检部位")).Text;
d.Mac_JCZQ = ((DropDownList)row.FindControl("检测周期")).SelectedItem.Text;

d.JCSD_FR = ((CheckBox)row.FindControl("发热")).Checked;
d.JCSD_ZD = ((CheckBox)row.FindControl("振动")).Checked;
d.JCSD_DJGZ = ((CheckBox)row.FindControl("电机故障")).Checked;
d.JCSD_TS = ((CheckBox)row.FindControl("探伤")).Checked;
d.JCSD_DL = ((CheckBox)row.FindControl("电缆")).Checked;
* **/

}
void BindGrid()
{
string ddlselect = DDL_Plant.SelectedItem.Text.ToString().Replace(" ", "");
string sql = "select * from T_MacUpInfo_Finished where replace(SourceCK,' ','') = '" + ddlselect + "'";//

DataTable dt = dal.FillDataTable(sql, null);



if (dt.Rows.Count > 0)
{
GridView1.DataSource = dt;
GridView1.DataBind();
Label2.Visible = false;
GridView1.Visible = true; Button1.Enabled = true;
}

else
{
GridView1.Visible = false; Button1.Enabled = false;
Label2.Visible = true; Label2.Text = ",请核查!";
}

}
...全文
228 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-10-27
  • 打赏
  • 举报
回复
如果是我的话 先把老数据foreach一边。放入DataTable中。然后新数据取出来。累加在DataTable中。 这个只有你自己写了。没现成代码
zhangzhen_927116 2010-10-27
  • 打赏
  • 举报
回复
楼上的都是大哥
cwlcwr 2010-10-27
  • 打赏
  • 举报
回复
code 说话!!!!!!!!!!!!!!!!!!!!1111
cwlcwr 2010-10-27
  • 打赏
  • 举报
回复
我也意识到页面中 各个事件出发后 会改变List值

使用ViewState 保存之

选择后add添加,重新绑定

能否给示例代码????????????????????????????????????????????

ViewState 好象是不可序的把
使用其过度暂存后 是否可以帮定到gridview
??????????????
wuyq11 2010-10-27
  • 打赏
  • 举报
回复
ViewState或cache保存List<T>中数据
选择后add添加,重新绑定
public List<string> lst{
get;
set;
}
cwlcwr 2010-10-27
  • 打赏
  • 举报
回复
我以尝试过
在外部声名 IList list = new ArrayList();

之后在点击事件内

MacObject d = new MacObject("1");
list.Add(d);
GridView2.DataSource = list;
GridView2.DataBind();

结果 list 还只是记录当前选择记录
之前的记录被替代
cwlcwr 2010-10-27
  • 打赏
  • 举报
回复
按照楼上几位思路
即帮定前 应整合数据源 ArrayList
使其不断累加至新数据 而不是新数据代替旧数据

能否给个代码???
wwfgu00ing 2010-10-27
  • 打赏
  • 举报
回复
wwfgu00ing 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 net_lover 的回复:]
数据的显示只跟数据源 DataSource 有关系,因此,你要显示什么,你就要想办法把数据加入到数据源中去。如果是要进行多次回发,你还需要对数据进行保存
[/Quote]

至于你想要什么样的数据,这要整合一下数据源即可,复杂的话,结合JS
cwlcwr 2010-10-27
  • 打赏
  • 举报
回复
依据以上代码
如何类加ArrayList?
code 说话
myhope88 2010-10-27
  • 打赏
  • 举报
回复
那你应该把数据源保存起来,到时选择时再合并下,然后重新赋给新的数据源就行了
孟子E章 2010-10-27
  • 打赏
  • 举报
回复
数据的显示只跟数据源 DataSource 有关系,因此,你要显示什么,你就要想办法把数据加入到数据源中去。如果是要进行多次回发,你还需要对数据进行保存
格桑花 2010-10-27
  • 打赏
  • 举报
回复
同意在绑定数据前将两次的数据合并,然后再绑定
hookyzlr 2010-10-27
  • 打赏
  • 举报
回复
两个gridview分别套两个updatepanel并且将更新方式都设置成conditional,
叶子 2010-10-27
  • 打赏
  • 举报
回复
第二次选择后,不要把Bgridview 的数据源直接更新为新的,而是将之前的数据和后选的数据累加到一起,然后再绑定。

c# 对两个Datatable的结构相同进行合并:

        
Datatable db=null;
DataTable dt = ds.Tables[0];
////两个datatable进行合并
db = dt.Copy();
DataRow[] foundRows = dt.Select();
for (int i = 0; i < foundRows.Length;i++)
{
db.ImportRow(foundRows[i]);
}
//两个结构一样的DT合并
DataTable DataTable1 = new DataTable();
DataTable DataTable2 = new DataTable();
DataTable newDataTable = DataTable1.Clone();

object[] obj = new object[newDataTable.Columns.Count];
for (int i = 0; i < DataTable1.Rows.Count; i++)
{
DataTable1.Rows[i].ItemArray.CopyTo(obj,0);
newDataTable.Rows.Add(obj);
}

for (int i = 0; i < DataTable2.Rows.Count; i++)
{
DataTable2.Rows[i].ItemArray.CopyTo(obj,0);
newDataTable.Rows.Add(obj);
}
Dgzn_CN 2010-10-27
  • 打赏
  • 举报
回复
LZ不好意思,上面的回复是偶做的个小测试……
如有不便,敬请谅解!
Dgzn_CN 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wwfgu00ing 的回复:]
引用 4 楼 net_lover 的回复:
数据的显示只跟数据源 DataSource 有关系,因此,你要显示什么,你就要想办法把数据加入到数据源中去。如果是要进行多次回发,你还需要对数据进行保存


至于你[/Quote]dfgdf

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧