1

我尝试了这样的事情但没有奏效:

GridViewRow row = (GridViewRow)(((Repeater)e.CommandSource).NamingContainer); 
Repeater _rpt1 = row.Cells[8].FindControl("rptReg") as Repeater;

错误:

Unable to cast object of type 'System.Web.UI.WebControls.Button' to type 'System.Web.UI.WebControls.Repeater'.

有没有办法我可以OnRowCommand使用 GridView 在事件中使用以下代码?

实际上,我正在尝试从 gridview 控件中删除该行,当用户单击它时,我正在获取多个 id 并传递给 SP 并更新表和databind the gridview

GridViewRow row = gv.SelectedRow;           
    Repeater _rpt = gv.Rows[e.RowIndex].Cells[8].FindControl("rptReg") as Repeater;
    Repeater _rpt1 = gv.Rows[e.RowIndex].Cells[9].FindControl("rptVisitor") as Repeater;

    foreach (RepeaterItem item in _rpt.Items)
    {
        TextBox _txt = item.FindControl("txtId") as TextBox;
        TextBox _txt1 = item.FindControl("txtName") as TextBox;
        //update db
    }
4

2 回答 2

3

请试试这个:

var viewRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
foreach (GridViewRow gvr in gvDetails.Rows)
{
    var btnSelect = (ImageButton)viewRow.FindControl("btnSelect");
    if (gvr == viewRow)
    {
        if (btnSelect.ImageUrl.ToLower() == "~/images/rbnormal.jpg")
        {
            btnSelect.ImageUrl = "~/Images/rbSelected.jpg";
            btnSelect.Enabled = false;
        }
    }
    else
    {
        btnSelect.ImageUrl = "~/Images/rbnormal.jpg";
        btnSelect.Enabled = true;
    }
}
于 2012-10-29T15:26:41.047 回答
0

您的错误告诉我名为“rptReg”的控件是一个按钮。

GridView 有一个名为 DataKeys 的属性,它可以保存多个 ID,因此您可以提取“PersonId”,例如:

     string personId = GridView1.DataKeys[e.RowIndex]["PersonId"].ToString();
于 2011-01-31T22:58:35.763 回答