我有一个Gridview dtAppend
。我希望当我按下删除按钮时,应该从用户表中删除所选行记录。
我首先在gridview中使用button field
,因为:
<asp:ButtonField Text="Delete" CommandName="DeleteRow" ControlStyle-CssClass="btn btn-danger btn-small" ControlStyle-ForeColor="White" />
<asp:TemplateField visible="false" ItemStyle-Width="0px">
<ItemTemplate>
<asp:HiddenField ID="HiddenField" Visible="false" runat="server" Value='<%# Eval("userId") %>' />
</ItemTemplate>
</asp:TemplateField>
我的客户说要显示JavaScript提醒,点击是时应该删除记录。我不能为按钮字段写onClientClick
所以我被迫使用普通的Asp按钮。
在gridview的rowCommand
上我得到了此代码中的隐藏字段值
if (e.CommandName == "DeleteRow")
{
GridViewRow row = dtAppend.Rows[Convert.ToInt32(e.CommandArgument)];
hidden1 = (HiddenField)row.Cells[6].FindControl("HiddenField");
string text = Convert.ToString((HiddenField)row.Cells[6].FindControl("HiddenField"));
Session["dtIdDel"] = hidden1.Value;
}
我在Session中获得了w值但我需要上面的代码工作Button_ClickEvent,如下所示
protected void deleteButton_Click(object sender, EventArgs e)
{
GridViewRow row = dtAppend.Rows[Convert.ToInt32(e.CommandArgument)];
hidden1 = (HiddenField)row.Cells[6].FindControl("HiddenField");
string text = Convert.ToString((HiddenField)row.Cells[6].FindControl("HiddenField"));
Session["dtIdDel"] = hidden1.Value;}
这是'e.CommandArgument'给出错误的地方
我无法在正常按钮点击中使用上述代码,因为它在e.CommandArgument
任何帮助?
答案 0 :(得分:2)
您最好删除Visible="false"
。因为,如果存在Visible="false"
,则必须为隐藏字段绑定的值不会绑定到字段中。任何它是一个隐藏的字段,所以使它成为Visible="true"
编辑:
如何处理Grid的RowDataBound事件,您是否为每一行分配CommandArgument,否则上述概念将无法在Paging中使用。参考如下
前: -
Button btnMail = (Button)e.Row.FindControl("lnkMail");
btnMail.CommandArgument = e.Row.RowIndex.ToString();
答案 1 :(得分:2)
只需删除visible="false"
<asp:HiddenField ID="HiddenField" runat="server" Value='<%# Eval("userId") %>' />
答案 2 :(得分:1)
您只需将ID发送为command argument
或
尝试以下代码:
var ID = int.Parse(((HiddenField)item.FindControl("HiddenField1")).Value);
sql = "delete from tablename where id=" + ID;
答案 3 :(得分:1)
我认为这很简单,而不是使用隐藏字段。
<asp:LinkButton CommandArgument='<%# Eval("userId") %>' OnClientClick="if (!confirm('Are you sure you want delete?')) return false;" CommandName="DeleteRow" ID="eliminar" runat="server" Text="delete"/>
if (e.CommandName == "DeleteRow")
{
int userId = Int32.Parse(e.CommandArgument.ToString());
}