如何让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字段即可
[解决办法]
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控件的,可以作为参考
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里面字就可以设置
[解决办法]
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
[解决办法]
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;
}
}
}