我无法将点击事件附加到我在网格视图中存储的图像上。基本上它是一个删除按钮,允许用户根据按钮的位置删除特定的行。我已准备好c#中的代码,但是,我似乎无法将click事件附加到它。
这是按钮的标记代码
<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 =&#34; gv_Quals_RowCommand&#34;
以下是点击事件
的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);
}
}
}
这是我不断获取的编译错误
CS0123:&#39; gv_Quals_RowCommand&#39;匹配委托&#39; ImageClickEventHandler&#39;
我无法通过属性设置click事件,因为它存储在网格视图中,因此我无法通过那里访问它。此外,click事件不会像我使用调试
测试的那样运行答案 0 :(得分:3)
问题在于GridViewCommandEventArgs
应该只是EventArgs
public void imgbDeleteP_Click(object sender, EventArgs e)
修改强>
我在你的代码中看到你使用Command Argument,所以如果你想使用它,你应该看到this post
基本上使用
onCommand
代替onClick
或将发送者强制转换为按钮以获取命令参数,例如:
var argument = ((ImageButton)sender).CommandArgument;
答案 1 :(得分:1)
您是否尝试在页面加载期间关联该网格的点击事件?
答案 2 :(得分:1)
我认为这是因为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行。