Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将单击事件附着到栅格视图中的图像上_C#_Asp.net - Fatal编程技术网

C# 将单击事件附着到栅格视图中的图像上

C# 将单击事件附着到栅格视图中的图像上,c#,asp.net,C#,Asp.net,我无法将单击事件附加到存储在栅格视图中的图像上。基本上,它是一个删除按钮,允许用户根据按钮的位置删除特定行。我已经准备好了c#中的代码,但是,我似乎无法将单击事件附加到它 这是按钮的标记代码 <asp:TemplateField HeaderText="Remove" ItemStyle-HorizontalAlign="Center"> <ItemTemplate>

我无法将单击事件附加到存储在栅格视图中的图像上。基本上,它是一个删除按钮,允许用户根据按钮的位置删除特定行。我已经准备好了c#中的代码,但是,我似乎无法将单击事件附加到它

这是按钮的标记代码

  <asp:TemplateField HeaderText="Remove" ItemStyle-HorizontalAlign="Center">
                        <ItemTemplate>
                            <asp:ImageButton ID="imgbDeleteP" runat="server" BORDER="0" CausesValidation="false" ImageUrl="~/img/Del.png" Height="25px" ImageAlign="Middle"
                               onClick ="gv_Quals_RowCommand" CommandArgument="<%#Container.DataItemIndex%>" CommandName="Remove" />
                        </ItemTemplate>

onClick=“gv\u Quals\u RowCommand”

下面是用c#表示单击事件的代码

protected void gv_Quals_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if ((e.CommandName == "Remove"))
        {
            int index = Convert.ToInt32(e.CommandArgument);
            GridViewRow row = gv_Quals.Rows[index];
            DataTable dtCurrentTable = (DataTable)Session["CurrentTable"];
            dtCurrentTable.Rows[index].Delete();
            if ((dtCurrentTable.Rows.Count < 0))
            {

            }
            else if ((row.Cells[0].Text != "*New*"))
            {
                int appId = 5000;
                //int appId = 1;
                string insProg = ("delete from projectunitassignment where UnitId =" + int.Parse(row.Cells[0].Text));
                SqlCommand cmd = new SqlCommand(insProg, conn);
                cmd.Connection.Close();
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                RebindCat(appId);
            }
        }
    }
受保护的void gv_Quals_row命令(对象发送方,GridViewCommandEventArgs e)
{
如果((e.CommandName==“删除”))
{
int index=Convert.ToInt32(e.CommandArgument);
GridViewRow行=gv_Quals.Rows[索引];
DataTable dtCurrentTable=(DataTable)会话[“CurrentTable”];
dtCurrentTable.Rows[index].Delete();
如果((dtCurrentTable.Rows.Count<0))
{
}
else if((行。单元格[0]。文本!=“*新*”)
{
int-appId=5000;
//int-appId=1;
字符串insProg=(“从projectunitassignment中删除,其中UnitId=“+int.Parse(row.Cells[0].Text));
SqlCommand cmd=新的SqlCommand(insProg,conn);
cmd.Connection.Close();
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
RebindCat(appId);
}
}
}
这就是我一直遇到的编译错误

CS0123:gv\u Quals\u RowCommand'与委托“ImageClickEventHandler”匹配时没有重载。


我无法通过属性设置单击事件,因为它存储在网格视图中,因此我无法通过网格视图访问它。此外,单击事件没有运行,因为我已经通过调试进行了测试。

在页面加载期间,您是否尝试将该网格的单击事件关联起来?

问题在于
GridViewCommandEventArgs
应该是
EventArgs

public void imgbDeleteP_Click(object sender, EventArgs e)
编辑:

我看到您的代码中使用了Command参数,所以如果您想使用它,您应该看到

基本上使用
onCommand
而不是
onClick
或将发送者强制转换为按钮来获取命令参数,类似于:


我认为这是因为
GridViewCommandEventArgs
通常用于
RowCommand
,将其更改为
EventArgs
,因此事件应该是这样的:

protected void gv_Quals_RowCommand(object sender, EventArgs e)
{
     ImageButton btn = (ImageButton)sender;
     string cmName= btn.CommandName;
     string cmArgument= btn.CommandArgument;
     if ((cmName == "Remove"))
     {
        ..... 
     }
}
或获取行索引:

GridViewRow gvRow = (GridViewRow)(sender as Control).Parent.Parent;
int index = gvRow.RowIndex;

第一个父项是
GridView
单元格,而
GridView
单元格的第二个父项是GridView行。

我不知道你的意思,你能显示一个示例吗?请检查“不,我不能”。网格视图中的按钮,因此除非找到控件,否则我无法通过id访问它。请尝试将id作为参数之一发送,这样您也可以拥有更多的控件。我认为这是因为
GridViewCommandEventArgs
通常用于
RowCommand
,将其更改为
EventArgs
否则您可以按照@Aria AnswerI进行操作。我刚刚将其更改为CommandArgument,现在它可以工作了,谢谢!
GridViewRow gvRow = (GridViewRow)(sender as Control).Parent.Parent;
int index = gvRow.RowIndex;