相对于高手也不算是一个很难的问题!
有这样的一个问题,在一个DataGrid中有如下的A、B、C、D几个模板列,全部绑定的是CheckBox,
ID A B C D
1 口 口 口 口 保存
2 口 口 口 口 保存
怎么将每行中选中了(设“1”)的CheckBox保存到数据库中?
问题点数:50、回复次数:9Top
1 楼saucer(思归)回复于 2003-11-02 23:30:26 得分 20
assume you are talking about CheckBox server controls,
foreach (DataGridItem dgi in DataGrid1.Items)
{
CheckBox a = (CheckBox)dgi.FindControl("ACheckID");
CheckBox b = (CheckBox)dgi.FindControl("BCheckID");
CheckBox c = (CheckBox)dgi.FindControl("CCheckID");
CheckBox d = (CheckBox)dgi.FindControl("DCheckID");
if (a.Checked)
{
//do something
}
}Top
2 楼LesleyChiu(鱼头)回复于 2003-11-02 23:31:08 得分 5
for 循环
{
if (判断checkbox.clicked)
写数据库
}
这样的话不用到autopostback,不会选一个就刷新一次。Top
3 楼chenlm(李逍遥)回复于 2003-11-02 23:31:43 得分 5
我只用了一个模板列,里面有一个RadioButtonList
在Button1_Click中
循环一遍
for(int j=0;j<DG2.Items.Count;j++) //19个(5,10,4)
{
TypeID.Add(dc1.Trans2Num(lbl0.Text));
RBL = (RadioButtonList)DG2.Items[j].Cells[0].Controls[3];
Label Lbl;
Lbl = (Label)DG2.Items[j].Cells[0].Controls[1];
ItemIndex.Add(Lbl.Text);
double bignum=0;
double num=0;
for(int k=0;k<RBL.Items.Count;k++) //13*2 + 6*3 = 44
{
if(RBL.Items[k].Selected==true)
{
if(strSqlIn == "")
{strSqlIn = RBL.Items[k].Value;}
else
{strSqlIn += "," + RBL.Items[k].Value;}
FeedbackInfo.Add(dc1.Trans2ABC(k));
//mark += Convert.ToInt32(RBL.Items[k].Value);
//Label1.Text = strSql+ "<br>";// FeedbackInfo + k;
break;//至关重要,否则有选择的话也会执行unCheckedMark += biggestnum;
}
num = Convert.ToDouble(dc1.Scalar("select itemvalue as 'mark' from surveyitemquestion where id="+RBL.Items[k].Value));
if(bignum<num)
{bignum=num;}
if(k==RBL.Items.Count-1)//没有选择的时候会执行
{
FeedbackInfo.Add("");
unCheckedMark += bignum;
}
}
}Top
4 楼Qlike(℡鱼儿)回复于 2003-11-03 18:48:42 得分 0
按照上面的方法,我的更新的代码这样写的,但是就是写入数据不了,什么错也没有,大家看看我什么地方弄错了!
public void DataGrid_UpdateCommand(object sender, DataGridCommandEventArgs e)
{
SqlConnection MyCn = new SqlConnection(strConn);
foreach (DataGridItem dgi in DataGrid1.Items)
{
CheckBox a = (CheckBox)dgi.FindControl("CheckBox1");
CheckBox b = (CheckBox)dgi.FindControl("CheckBox2");
CheckBox c = (CheckBox)dgi.FindControl("CheckBox3");
CheckBox d = (CheckBox)dgi.FindControl("CheckBox4");
string strSQL = "update quanxian set createnew = @createnew,deletelist = @deletelist,modify = @modify,readlist = @readlist where id= " + DataGrid1.DataKeys[(int)e.Item.ItemIndex] ;
SqlCommand MyCmd = new SqlCommand(strSQL,MyCn);
MyCmd.Parameters.Add(new SqlParameter("@createnew", SqlDbType.NVarChar, 11));
MyCmd.Parameters.Add(new SqlParameter("@deletelist", SqlDbType.NVarChar, 40));
MyCmd.Parameters.Add(new SqlParameter("@modify", SqlDbType.NVarChar, 20));
MyCmd.Parameters.Add(new SqlParameter("@readlist", SqlDbType.NChar, 12));
//MyCmd.Parameters["@id"].Value = DataGrid1.DataKeys[(int)e.Item.ItemIndex];
MyCmd.Parameters["@createnew"].Value = a.Checked.ToString();
MyCmd.Parameters["@deletelist"].Value = b.Checked.ToString();
MyCmd.Parameters["@modify"].Value = c.Checked.ToString();
MyCmd.Parameters["@readlist"].Value = d.Checked.ToString();
if (((a.Checked == true) && (a.Enabled == true))||((b.Checked ==true) && (b.Enabled == true))||((c.Checked ==true) && (c.Enabled ==true))||((d.Checked ==true) && (d.Enabled ==true)))
{
MyCmd.Parameters["@createnew"].Value = "1";
MyCmd.Parameters["@deletelist"].Value = "1";
MyCmd.Parameters["@modify"].Value = "1";
MyCmd.Parameters["@readlist"].Value = "1";
}
else
{
MyCmd.Parameters["@createnew"].Value = "0";
MyCmd.Parameters["@deletelist"].Value = "0";
MyCmd.Parameters["@modify"].Value = "0";
MyCmd.Parameters["@readlist"].Value = "0";
}
MyCmd.Connection.Open();
MyCmd.ExecuteNonQuery();
MyCn.Close();
}
DataGrid1.EditItemIndex = -1;
BindGrid();
}Top
5 楼saucer(思归)回复于 2003-11-03 18:55:39 得分 0
if you do
int n = MyCmd.ExecuteNonQuery();
Response.Write(String.Format("****{0}****}",n));
what do you see??
try to write out the sql statement and run it in SQL Query Analzyer to see if it works
Top
6 楼Qlike(℡鱼儿)回复于 2003-11-03 19:33:48 得分 0
在我选择后更新报错说你输入的字符正确!Top
7 楼wd_318(饭加加)回复于 2003-11-03 20:15:33 得分 20
public void DataGrid_UpdateCommand(object sender, DataGridCommandEventArgs e)
{
SqlConnection MyCn = new SqlConnection(strConn);
foreach (DataGridItem dgi in DataGrid1.Items)
{
CheckBox a = (CheckBox)dgi.FindControl("CheckBox1");
CheckBox b = (CheckBox)dgi.FindControl("CheckBox2");
CheckBox c = (CheckBox)dgi.FindControl("CheckBox3");
CheckBox d = (CheckBox)dgi.FindControl("CheckBox4");
string strSQL = "update quanxian set createnew = @createnew,deletelist = @deletelist,modify = @modify,readlist = @readlist where id= " + DataGrid1.DataKeys[(int)e.Item.ItemIndex] ;
SqlCommand MyCmd = new SqlCommand(strSQL,MyCn);
MyCmd.Parameters.Add(new SqlParameter("@createnew", SqlDbType.NVarChar, 11));
MyCmd.Parameters.Add(new SqlParameter("@deletelist", SqlDbType.NVarChar, 40));
MyCmd.Parameters.Add(new SqlParameter("@modify", SqlDbType.NVarChar, 20));
MyCmd.Parameters.Add(new SqlParameter("@readlist", SqlDbType.NChar, 12));
if ((a.Checked == true) && (a.Enabled == true))
MyCmd.Parameters["@createnew"].Value = "1";
else
MyCmd.Parameters["@createnew"].Value = "0";
if((b.Checked ==true) && (b.Enabled == true))
MyCmd.Parameters["@deletelist"].Value = "1";
else
MyCmd.Parameters["@deletelist"].Value = "0";
if((c.Checked ==true) && (c.Enabled ==true))
MyCmd.Parameters["@modify"].Value = "1";
else
MyCmd.Parameters["@modify"].Value = "0";
if((d.Checked ==true) && (d.Enabled ==true))
MyCmd.Parameters["@readlist"].Value = "1";
else
MyCmd.Parameters["@readlist"].Value = "0";
MyCmd.Connection.Open();
MyCmd.ExecuteNonQuery();
MyCn.Close();
}
DataGrid1.EditItemIndex = -1;
BindGrid();
}
Top
8 楼wd_318(饭加加)回复于 2003-11-03 20:28:29 得分 0
public void DataGrid_UpdateCommand(object sender, DataGridCommandEventArgs e)
{
SqlConnection MyCn = new SqlConnection(strConn);
CheckBox a = (CheckBox)e.Item.FindControl("CheckBox1");
CheckBox b = (CheckBox)e.Item.FindControl("CheckBox2");
CheckBox c = (CheckBox)e.Item.FindControl("CheckBox3");
CheckBox d = (CheckBox)e.Item.FindControl("CheckBox4");
string strSQL = "update quanxian set createnew = @createnew,deletelist = @deletelist,modify = @modify,readlist = @readlist where id= " + DataGrid1.DataKeys[(int)e.Item.ItemIndex].ToString();
SqlCommand MyCmd = new SqlCommand(strSQL,MyCn);
MyCmd.Parameters.Add(new SqlParameter("@createnew", SqlDbType.NVarChar, 11));
MyCmd.Parameters.Add(new SqlParameter("@deletelist", SqlDbType.NVarChar, 40));
MyCmd.Parameters.Add(new SqlParameter("@modify", SqlDbType.NVarChar, 20));
MyCmd.Parameters.Add(new SqlParameter("@readlist", SqlDbType.NChar, 12)); //这里四行的类型的长度注意改一下!
if ((a.Checked == true) && (a.Enabled == true))
MyCmd.Parameters["@createnew"].Value = "1";
else
MyCmd.Parameters["@createnew"].Value = "0";
if((b.Checked ==true) && (b.Enabled == true))
MyCmd.Parameters["@deletelist"].Value = "1";
else
MyCmd.Parameters["@deletelist"].Value = "0";
if((c.Checked ==true) && (c.Enabled ==true))
MyCmd.Parameters["@modify"].Value = "1";
else
MyCmd.Parameters["@modify"].Value = "0";
if((d.Checked ==true) && (d.Enabled ==true))
MyCmd.Parameters["@readlist"].Value = "1";
else
MyCmd.Parameters["@readlist"].Value = "0";
MyCmd.Connection.Open();
MyCmd.ExecuteNonQuery();
MyCn.Close();
DataGrid1.EditItemIndex = -1;
BindGrid();
}
以上是单行更新的代码Top
9 楼Qlike(℡鱼儿)回复于 2003-11-04 00:15:00 得分 0
问题还是得不到解决,大家再帮忙看看问题出在哪里了!Top




