日期:2014-05-19  浏览次数:20450 次

[100分求]一个DataGrid里面的checkbox如何跟据另一个表里面的值进行打勾呢?
求教:一个DataGrid显示内容中每个列有一个checkbox,     要实现跟另一个dataset里面的数据进行打勾[如ds里面有对应的值就打勾]
如何实现啊?
我想的:在datagrid里面的ItemDataBound操作,先读另一个表的值,进行判断,但是如何写判断语句就不知道如何写了,请教了:)


------解决方案--------------------
占位,不难,我看看先。
------解决方案--------------------
for(int i=0;i <DataGrid1.rows.count;i++)
{
checkbox cbSel=(checkbox)DataGrid.rows[i].FindControl( "checkbox控件ID ");
if(dataset.table[0].row[i][ "你要取值的column "]).ToString()== "你要比较的值 "
{
cbSel.Checked=true;
}
}
------解决方案--------------------
这个东西要放在DataGrid绑定的方法或其子方法中
dataset也要在那里给填充。
------解决方案--------------------
在ItemCreated事件里面实现,代码类似
protected void DataGrid1_ItemCreated(object sender, DataGridItemEventArgs e)
{
CheckBox cb = e.Item.FindControl( "CheckBox_Test ") as CheckBox;
if (cb != null)
cb.Checked = this.CheckSomething();
}

其中this.CheckSomething() 是你自己写的用来判断是否存在的,
具体怎么判断,你可以把需要判断的数据都加载进DataSet,然后在DataSet里判断。
------解决方案--------------------
<asp:TemplateColumn> <ItemTemplate> <asp:CheckBox ID= "chk1 " runat= "server " Checked= ' <%#Eval( "id ").ToString()== "1 "%> ' /> </ItemTemplate> </asp:TemplateColumn>
------解决方案--------------------
用GridView的CheckBoxField很容易就实现了
------解决方案--------------------
Iceguy(Snow) ( ) 信誉:100 Blog 加为好友 2007-4-4 23:07:54 得分: 0



for(int i=0;i <DataGrid1.rows.count;i++)
{
checkbox cbSel=(checkbox)DataGrid.rows[i].FindControl( "checkbox控件ID ");
if(dataset.table[0].row[i][ "你要取值的column "]).ToString()== "你要比较的值 "
{
cbSel.Checked=true;
}
}
=============================================
正解



------解决方案--------------------
//这里我要取一个DataGrid里面的一行的一个值和ds1里面的值,但我不会写了
//向各位请教


//取datagrid1里面某个单元格里面的值:
this.DataGrid1.Items[i].Cells[j].Text

------解决方案--------------------
hy_lihuan(我想早恋,可是已经晚了) ( ) 信誉:98 Blog 加为好友 2007-04-05 15:36:13 得分: 0


再写一个方法,用foreach把DataGrid的值和Ds的值进行判断,有就chk=true;,这样会不会比在ItemDataBound里面操作快点呢?

会,你如果把两个数据表全部读取出来然后比较,肯定会比在ItemDataBound中快,因为ItemDataBound里面有多少条数据你就需要连接几次数据库


------------

如果DataBound的是DataSet呢? 何来连接几次数据库……
------解决方案--------------------
求教:一个DataGrid显示内容中每个列有一个checkbox, 要实现跟另一个dataset里面的数据进行打勾[如ds里面有对应的值就打勾]

首先LZ得确定DataGrid上面得确定一个主键和dataset中的一列相对应,可以考虑设置DataKeyField;
如:
<asp:DataGrid .... DataKeyField= "id ">
然后cs里面:

foreach(DataGridItem item in dg1.Items)
{
CheckBox chk= (CheckBox)item.FindControl( "cbox_isok ");

for(int j=0;j <ds1.Tables[ "ru "].Columns;j++)
{
string s=this.DataGrid1.DataKeys[j].ToString();

if(s==ds1.Tables[ "ru "].Rows[i][ "物料名 "])
{
chk.Checked=true;