我很难从asp:buttonfield获取一个javascript确认框:
这是Gridview的原始代码,但是buttonfield似乎不接受“onClientClick”
<asp:GridView ID="gvNavios" runat="server" onrowcommand="gvNavios_RowCommand">
<Columns>
<asp:ButtonField runat="server" ButtonType="Button" Text="delete" CommandName="Eliminar" />
</Columns>
</asp:GridView>
所以我尝试了asp:Linkbutton:
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:LinkButton ID="eliminar" CommandName="delete" runat="server" Text="delete"/>
</ItemTemplate>
</asp:TemplateField>
然而,这样我无法获得点击哪一行,因为e.commandargument未填充
C#代码隐藏:
protected void gvNavios_RowCommand(object sender, GridViewCommandEventArgs e)
{
string currentCommand = e.CommandName;
int currentRowIndex = Int32.Parse(e.CommandArgument.ToString());
string imo = gvNavios.Rows[currentRowIndex].Cells[3].Text;
if (currentCommand.Equals("delete"))
{
eliminarNavio(imo);
Response.Redirect(Request.RawUrl);
}
}
我感谢以下其中一项:在asp:按钮中插入javascript,或从linkbutton获取行号。
答案 0 :(得分:0)
您需要将CommandArgument添加到LinkButton并提供一些索引(对象ID将是最佳的)。
<asp:LinkButton ID="eliminar" CommandArgument='<%# Eval("ID") %>' CommandName="delete" runat="server" Text="delete"/>
答案 1 :(得分:0)
Porque no usas un templatefield ?, creo es mas facil
为什么不使用模板字段?¿
RowDataBound :内的
首先创建一个templatefield,然后在templatefield中插入一个imageButton,将其命名为img_borrar(commandName)。
然后在rowcommand中找到它,设置索引(CommandArgument),设置一些样式和java确认:
If e.Row.RowType = DataControlRowType.DataRow Then
Dim boton_borrar As ImageButton = CType(e.Row.Cells(1).FindControl("img_borrar"), ImageButton)
boton_borrar .CommandArgument = e.Row.RowIndex.ToString
boton_borrar .Style("cursor") = "hand"
boton_borrar .Attributes.Add("onClick", "return window.confirm(' ¿Desea borrar este registro? ');")
End If