在ASP.NET中单击按钮时获取Gidview隐藏字段值

时间:2014-02-05 06:02:16

标签: c# asp.net

我有一个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

中出错

任何帮助?

4 个答案:

答案 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());
}