Asp.net 如何获取选中复选框的gridview中的值?
嗨,我有一个网格视图,其中有一个复选框列 当用户检查并点击按钮时 这就是我的网格的外观Asp.net 如何获取选中复选框的gridview中的值?,asp.net,c#-4.0,gridview,checkbox,Asp.net,C# 4.0,Gridview,Checkbox,嗨,我有一个网格视图,其中有一个复选框列 当用户检查并点击按钮时 这就是我的网格的外观 checkboxColumn|ID|CustomerNAme -------------------------------------- 1|asjd 2|asdfas 3|asdjka assign(
checkboxColumn|ID|CustomerNAme
--------------------------------------
1|asjd
2|asdfas
3|asdjka
assign(Button)
当用户检查所需的行时,我只想将grid和stoer的ID值输入数据库
protected void BtnAssignWork_Click(object sender, EventArgs e)
{
for (int i = 0; i < GrdCustomerData.RowsInViewState.Count; i++)
{
GridDataControlFieldCell cell = GrdCustomerData.RowsInViewState[i].Cells[0] as GridDataControlFieldCell;
CheckBox chk = cell.FindControl("Chkselect") as CheckBox;
if (chk.Checked == true)
{
var allIDs = (from item in GrdCustomerData.Rows.Cast<GridRow>()
let id = int.Parse(item.Cells[1].Text)
where chk.Checked
select id).ToList();
using (var myconn = new SqlConnection(connstring))
{
foreach (var id in allIDs)
{
using (var mycomm = new SqlCommand("SP_AssignedWork", myconn))
{
myconn.Open();
mycomm.CommandType = CommandType.StoredProcedure;
mycomm.Parameters.Add("@LoanID", SqlDbType.VarChar).Value = id;
mycomm.Parameters.Add("@EmpID", SqlDbType.VarChar).Value = DDLSelectEmployee.SelectedValue;
mycomm.ExecuteNonQuery();
myconn.Close();
}
}
}
}
protectedvoidbtnaSignwork\u单击(对象发送方,事件参数e)
{
对于(int i=0;i
有人能帮我吗?..使用Gridviewrows类从该使用单元格[1]中查找当前行,该单元格表示该单元格中的控件,您可以从中获取id您可以使用属性获取当前选定的行,然后从该行获取所需的单元格。类似于:
GridViewRow row = CustomersGridView.SelectedRow;
int CustomerId = int.parse(row.Cells[2].Tex);
假设您使用的是
模板字段
和带有ID=“Chkselect”
的复选框
:
protectedvoidbtnaSignwork\u单击(对象发送方,事件参数e){
var allIDs=(来自GrdCustomerData.Rows.Cast()中的项)
设chk=(复选框)项。单元格[0]。FindControl(“Chkselect”)
让id=int.Parse(item.Cells[1].Text)
chk在哪里检查的
选择id.ToList();
使用(var myconn=newsqlconnection(connstring)){
myconn.Open();
foreach(allid中的varid){
使用(var mycomm=new SqlCommand(“SP_AssignedWork”,myconn)){
mycomm.CommandType=CommandType.storedProcess;
mycomm.Parameters.Add(“@LoanID”,SqlDbType.Int).Value=id;
mycomm.Parameters.Add(“@EmpID”,SqlDbType.Int).Value=Int.Parse(DDLSelectEmployee.SelectedValue);
mycomm.ExecuteNonQuery();
}
}
}
}
编辑:为了澄清,我将这两个部分合并在一起。您不需要额外的行循环,因为LINQ查询已经这样做了。我解决我的答案的任何方法 以下是代码,我希望它可能对某些人有所帮助
void grid1_RowDataBound(object sender, GridRowEventArgs e)
{
if (e.Row.RowType == GridRowType.DataRow && GrdCustomerData.RowsInViewState.Count > 0)
{
GridDataControlFieldCell cell = e.Row.Cells[0] as GridDataControlFieldCell;
CheckBox chk = cell.FindControl("Chkselect") as CheckBox;
GridDataControlFieldCell cellInViewState = GrdCustomerData.RowsInViewState[e.Row.RowIndex].Cells[0] as GridDataControlFieldCell;
CheckBox chkInViewState = cellInViewState.FindControl("Chkselect") as CheckBox;
if (cell.Value == chkInViewState.ToolTip)
{
chk.Checked = chkInViewState.Checked;
}
}
}
protected void BtnAssignWork_Click(object sender, EventArgs e)
{
string LoanIds = "";
for (int i = 0; i < GrdCustomerData.RowsInViewState.Count; i++)
{
GridDataControlFieldCell cell = GrdCustomerData.RowsInViewState[i].Cells[0] as GridDataControlFieldCell;
CheckBox chk = cell.FindControl("Chkselect") as CheckBox;
if (chk.Checked == true)
{
if (!string.IsNullOrEmpty(LoanIds))
LoanIds += "";
LoanIds = chk.ToolTip;
SqlConnection myconn = new SqlConnection(connstring);
SqlCommand mycomm = new SqlCommand("SP_AssignedWork", myconn);
myconn.Open();
mycomm.CommandType = CommandType.StoredProcedure;
mycomm.Parameters.Add("@LoanID", SqlDbType.VarChar).Value = LoanIds;
mycomm.Parameters.Add("@EmpID", SqlDbType.VarChar).Value = DDLSelectEmployee.SelectedValue;
mycomm.ExecuteNonQuery();
myconn.Close();
}
}
}
}
void grid1\u RowDataBound(对象发送方,GridRowEventArgs e)
{
如果(e.Row.RowType==GridRowType.DataRow&&GrdCustomerData.RowsInViewState.Count>0)
{
GridDataControlFieldCell=e.Row.Cells[0]作为GridDataControlFieldCell;
复选框chk=cell.FindControl(“Chkselect”)作为复选框;
GridDataControlFieldCell cellInViewState=GrdCustomerData.RowsInViewState[e.Row.RowIndex]。单元格[0]作为GridDataControlFieldCell;
复选框chkInViewState=cellInViewState.FindControl(“Chkselect”)作为复选框;
if(cell.Value==chkInViewState.ToolTip)
{
chk.Checked=chkInViewState.Checked;
}
}
}
受保护的无效BTNASignWork\u单击(对象发送者,事件参数e)
{
字符串LoanIds=“”;
对于(int i=0;i
Hi…我编辑了我的答案你能检查一下吗..我在这一行出错..“if(chkGrid.Checked==true)”表示对象引用未设置为object@Anil:我还编辑了我的答案,你看到了吗?除此之外,我不能告诉你更多,因为你还没有显示aspx标记,但是按钮单击处理程序中的行循环与LINQ查询是冗余的(allid
已经包含所有选定的ID).geting相同的错误对象引用未设置为对象的实例我获得了控件evry现在一切正常…但在插入时它会获取所有id..其中它必须获取仅选中列的id…您应该编辑原始问题,并在其中添加到目前为止的内容。您使用了什么代码?我的LINQ查询是否按预期工作?它应该只列出属于选中行的所有id。我得到了控制evry现在一切都好了…但在插入时,它会获取所有id..其中它必须获取仅选中列的id。这是一个答案还是一个加法
void grid1_RowDataBound(object sender, GridRowEventArgs e)
{
if (e.Row.RowType == GridRowType.DataRow && GrdCustomerData.RowsInViewState.Count > 0)
{
GridDataControlFieldCell cell = e.Row.Cells[0] as GridDataControlFieldCell;
CheckBox chk = cell.FindControl("Chkselect") as CheckBox;
GridDataControlFieldCell cellInViewState = GrdCustomerData.RowsInViewState[e.Row.RowIndex].Cells[0] as GridDataControlFieldCell;
CheckBox chkInViewState = cellInViewState.FindControl("Chkselect") as CheckBox;
if (cell.Value == chkInViewState.ToolTip)
{
chk.Checked = chkInViewState.Checked;
}
}
}
protected void BtnAssignWork_Click(object sender, EventArgs e)
{
string LoanIds = "";
for (int i = 0; i < GrdCustomerData.RowsInViewState.Count; i++)
{
GridDataControlFieldCell cell = GrdCustomerData.RowsInViewState[i].Cells[0] as GridDataControlFieldCell;
CheckBox chk = cell.FindControl("Chkselect") as CheckBox;
if (chk.Checked == true)
{
if (!string.IsNullOrEmpty(LoanIds))
LoanIds += "";
LoanIds = chk.ToolTip;
SqlConnection myconn = new SqlConnection(connstring);
SqlCommand mycomm = new SqlCommand("SP_AssignedWork", myconn);
myconn.Open();
mycomm.CommandType = CommandType.StoredProcedure;
mycomm.Parameters.Add("@LoanID", SqlDbType.VarChar).Value = LoanIds;
mycomm.Parameters.Add("@EmpID", SqlDbType.VarChar).Value = DDLSelectEmployee.SelectedValue;
mycomm.ExecuteNonQuery();
myconn.Close();
}
}
}
}