首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

[100分求]一个DataGrid里面的checkbox怎么跟据另一个表里面的值进行打勾呢

2012-01-14 
[100分求]一个DataGrid里面的checkbox如何跟据另一个表里面的值进行打勾呢?求教:一个DataGrid显示内容中每

[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;


break;
}
}


[解决办法]
UPUPUPU
[解决办法]
一个客户端“全选”示例:
function checkall(val)
{
for(var i=0;i <document.all.length;i++)
{
// <input type= "text " ......> tagName= "INPUT " type= "text "
// <input type= "checkbox " ......> tagName= "INPUT " type= "checkbox "
// <select ......> tagName= "SELECT " type= "select-one "
if(document.all(i).tagName == "SELECT " && document.all(i).type == "select-one " && document.all(i).id != "dropAll ")
{
document.all(i).options[val].selected = true;
}
}
}
[解决办法]
protected void DataGrid1_ItemCreated(object sender, DataGridItemEventArgs e)
{
CheckBox cb = e.Item.FindControl( "CheckBox_Test ") as CheckBox;
if (cb != null)
cb.Checked = this.CheckSomething();
}
[解决办法]
foreach(DataGridItem item in dg1.Items)
{
string s=item.Cells[ "你具体的列(索引从0开始) "].Text

如果那一多时是个控件(你说的Label):
string s=((Label)item.FindControl( "你控件的ID ")).Text
[解决办法]
首先绑定datagride时要放在!ispostback里面

for(int i=0;i <datagride1.items.rows.count;i++)
{
string s = checkbox(datagride1.items.findcontral[ "checkbox "]).tostring();
if(s== "比较的值 ")
{
....
}
}
这样就可以了!

热点排行