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

怎么让gridview中的checkbox根据数据库情况默认选中

2011-12-31 
如何让gridview中的checkbox根据数据库情况默认选中?我有俩表table1filed1filed212222323334342323table2f

如何让gridview中的checkbox根据数据库情况默认选中?
我有俩表 
table1 filed1 filed2
  1 22
  2 2323
  3 343
  4 2323
table2 filed1 filed2
  1 22
  3 343


通过 gridview 绑定 table1 和 checkbox 并且 让gridview中的checkbox 根据table2 默认选中(即table2中有的行默认选中)



[解决办法]
在业务层用c#把这两个table处理成一个结果table

当然在结果table里要新增一个bool类型的字段

最后在前台用checkbox绑定此bool字段即可
[解决办法]

探讨
在业务层用c#把这两个table处理成一个结果table

当然在结果table里要新增一个bool类型的字段

最后在前台用checkbox绑定此bool字段即可

[解决办法]
探讨
在业务层用c#把这两个table处理成一个结果table

当然在结果table里要新增一个bool类型的字段

最后在前台用checkbox绑定此bool字段即可

[解决办法]
探讨
在业务层用c#把这两个table处理成一个结果table

当然在结果table里要新增一个bool类型的字段

最后在前台用checkbox绑定此bool字段即可

[解决办法]
学习
[解决办法]
在Gridview的数据绑定的事件中,在数据加载完循环一次Gridview中的checkbox列,把这个里面的checkbox的checked设置成true
[解决办法]
up
[解决办法]
你是这个意思么?
select * from table1 where filed1 in (select filed1 from table2)
然后在你的业务层做下判断,有就true,没有就fales,来设置checkbox是否被选中
[解决办法]
rowsdatabound中一行行处理。
[解决办法]
在这个事件里写代码
C# code
void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)  {    if(e.Row.RowType == DataControlRowType.DataRow)    {      // Display the company name in italics.      e.Row.Cells[1].Text = "<i>" + e.Row.Cells[1].Text + "</i>";    }  }
[解决办法]
datalist控件的,可以作为参考
C# code
protected void dlCcList_ItemDataBound(object sender, DataListItemEventArgs e)        {            if (Request["mailerId"] == null)                return;            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)            {                string mailerId = Request["mailerId"];                Ecommerce.BLL.Ecommerce_Cclist_Mailer cclist_MailerBll = new Ecommerce.BLL.Ecommerce_Cclist_Mailer();                string dataKey = dlCcList.DataKeys[e.Item.ItemIndex].ToString();                List<Ecommerce.Model.Ecommerce_Cclist_Mailer> cclist_MailerList                            = cclist_MailerBll.GetModelList("mailerid = " + mailerId + " and cclistid=" + dataKey);                if (cclist_MailerList.Count > 0)                {                    ((CheckBox)e.Item.FindControl("CheckBox1")).Checked = true;                }            }        }
[解决办法]
有默认属性的 你只要checkbox 的 value里面字就可以设置
[解决办法]
C# code
DataSet ds=new DataSet();        using(SqlConnection conn=new SqlConnection("server=(local);database=你的数据库;integrated security=sspi"))        {            SqlDataAdapter da=new SqlDataAdapter("select * from table1",conn);            da.Fill(ds,"table1");            DataColumn filed3 = new DataColumn("isExist", typeof(System.Boolean));            ds.Tables["table1"].Columns.Add(filed3);            for (int i = 0; i < ds.Tables["table1"].Rows.Count; i++)            {                SqlCommand cmd=new SqlCommand(string.Format("select * from table2 where filed1='{0}'",ds.Tables["table1"].Rows[i][0]),conn);                SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow);                if (dr.Read())                {                    ds.Tables["table1"].Rows[i][2] = true;                }                else                {                    ds.Tables["table1"].Rows[i][2] = false;                }            }        } 


[解决办法]
然后checkbox的Checked 字段就绑定 我们自己加上的那列

Checked='<%# Eval("isExist") %>'


上端在代码在使用cmd对象的时候少写了打开连接.....搞忘了,不好意思
[解决办法]
bool类型他会根据数据库自己选中
[解决办法]
绑定后..来个循环...判断一下..然后再做你想做的事
[解决办法]
噢下、从中受益了 学习了下
[解决办法]
学习!
[解决办法]
可以用事件触发,在table2选中事件触发table1中的checkbox中 checded即可。
[解决办法]
IT技术联盟群66799336 欢迎爱好IT编程事业的人踊跃加入
[解决办法]
学习

[解决办法]
没有很好的方法,就得在ItemDataBound事件中一个一个的邦定!!!
我前两天的一个项目中就是这么做的!!!!

[解决办法]
太好了
[解决办法]
同意14楼
[解决办法]
关注!
[解决办法]
学习。
[解决办法]
精华?

在哪???
[解决办法]
关注ing
[解决办法]

探讨
在Gridview的数据绑定的事件中,在数据加载完循环一次Gridview中的checkbox列,把这个里面的checkbox的checked设置成true

[解决办法]
引用楼主 dl_wang 的帖子:
我有俩表
table1 filed1 filed2
1 22
2 2323
3 343
4 2323
table2 filed1 filed2
1 22
3 343


通过 gridview 绑定 table1 和 checkbox 并且 让gridview中的checkbox 根据table2 默认选中(即table2中有的行默认选中)

[解决办法]

你可以试下在绑定上判断从数据表里取出来的值,来设定checkbox的checked属性:

Checked=' <%# Eval("字段").ToString()=="A"?true:false %>' 

[解决办法]
这样最的好处第一只需要查询一次数据库,而且也只需要进行一次绑定。
[解决办法]
为什么这样的问题会推荐上来?
[解决办法]
SAFDG
[解决办法]
顶一下
[解决办法]
SQL code
select a.field1,a.field2,cast(case when b.field1 is null then 0 else 1 end as bit) as state from table1 a     left join table2 b on b.field1=a.field1
[解决办法]
学习啦!
[解决办法]
42楼最好,如果要比较的字段是数值型或内容都是数字还可以使用ISNUMERIC函数


select a.filed1,a.filed2,ISNUMERIC(b.filed1) as state from table1 a 
left join table2 b on b.filed1=a.filed1
[解决办法]
 


protected void CheckBox1_PreRender(object sender, EventArgs e)
{
if (((CheckBox)sender).Text== "1")
((CheckBox)sender).Enabled =False
else if (((CheckBox)sender).Text == "1")
((CheckBox)sender).Enabled = True;

}
[解决办法]
路过.学习一下....
[解决办法]
选取中后变色:
function chkRow(obj){
var r = obj.parentElement.parentElement;
if(obj.checked){ r.style.backgroundColor="#ffdab9";}
else {if(r.rowIndex%2==1)r.style.backgroundColor="";else r.style.backgroundColor="";}
}
</script>

GridView中的CheckBox:
<asp:CheckBox ID="chkSingle" runat="server" onclick="javascript:chkRow(this);" /> 


[解决办法]
向:pt1314917 
CutBug 学习...
[解决办法]
既然涉及到两张表的操作问题,而GridView是只能绑定一张表的。那自然你查询出来的必须是一张表。那么就如2楼说的多表联合查询成单表,然后像你平常操作
Gridview去操作去编程就OK了。
[解决办法]
不防参考视频:
http://www.cnblogs.com/insus/articles/1406192.html
[解决办法]
学习了
[解决办法]
如果gridview和checkbox是分开的,不在一起:那就是绑定checkbox时要关联两张表。

检查table2里的值是否为真,如果是真就checkbox checked=true啊
[解决办法]
这里怎么贴图啊?

我form中添加了两个datagridview,datagridview1对应你的table1,datagridview2对应的你的table2,
在datagridview2的cellclick事件中判断当前你选中的checkbox行的column[1]值与datagridview1中的column[1]值是否相同,
相同就将datagridview1的checkbox选中,并改变背景色。

参考代码:

 if (e.RowIndex < 0)
 {
return;
 }

foreach(DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[1].Value.ToString().Equals(dataGridView2.Rows[e.RowIndex].Cells1].Value.ToString()))
{
row.DefaultCellStyle.BackColor = Color.Bisque;
row.Cells[0].Value = true;
}
 }

[解决办法]
关注…………
[解决办法]

Status欄位隻是一個狀態位 你要想辦法得到 
.aspx
<input type="checkbox" id="ckb" name="ckb" checked="<%#GetString(Eval("Status").ToString())
%>">
.cs
public sting GetString(string Status)
{
string reV="false";
if(Status=="1")
{
return "true"; 
}
else
{
return "false";
}
}
方法不是唯一的,希望大家多用幾種方法實現
[解决办法]
学习,最近也做这个功能
[解决办法]

[解决办法]
学习了
[解决办法]
我只想 赚点分

------解决方案--------------------


这是我在项目中挖出来的代码
//设置某些字段的值
protected void SetSomeFlag()
{
foreach (GridViewRow dr in GridView1.Rows)
{
Label lbl = (Label)dr.FindControl("lblModuleId");

CheckBox ckbRow = (CheckBox)dr.FindControl("ckbRow");//取道数据库的值,在选中
CheckBox ckbLogin = (CheckBox)dr.FindControl("ckbLogin");
CheckBox ckbInsert = (CheckBox)dr.FindControl("ckbInsert");
CheckBox ckbDelete = (CheckBox)dr.FindControl("ckbDelete");
CheckBox ckbUpdate = (CheckBox)dr.FindControl("ckbUpdate");
CheckBox ckbSelect = (CheckBox)dr.FindControl("ckbSelect");

int ModuleIndex = Convert.ToInt16(lbl.Text.ToString());

if ((ModuleIndex % 1000) == 0)//设置的模块
{
ckbRow.Visible = false;
ckbLogin.Visible = true; //只有登录可用
ckbInsert.Visible = false;
ckbDelete.Visible = false;
ckbUpdate.Visible = false;
ckbSelect.Visible = false;

dr.Font.Bold = true;
//dr.BackColor = Color.FromArgb(204, 204, 180);
}
else
{
ckbRow.Visible = true;
ckbLogin.Visible = true;
ckbInsert.Visible = true;
ckbDelete.Visible = true;
ckbUpdate.Visible = true;
ckbSelect.Visible = true;
}
}
}

热点排行