【问题标题】:GridView button - yes/no optionGridView 按钮 - 是/否选项
【发布时间】:2017-03-26 12:23:13
【问题描述】:

我无法弄清楚如何造成这种情况。我有 ASP.NET 应用程序,其网页显示链接到数据库的 GridView - 显示可以租用的书籍。我想在每一行都有按钮,所以用户可以点击并租借这本书。单击后,用户应该会收到带有问题的消息框,例如“您真的要租这本书吗?和是/否选项,并且在 c# 代码中我想用线条来表示这个答案,单击此按钮并正确处理它。

到目前为止,我能够创建此代码:

网格视图:

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1" EmptyDataText="Žádné datové záznamy k zobrazení." OnRowCommand="GridView2_RowCommand">
                        <Columns>
                            <asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="id" />
                            <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
                            <asp:BoundField DataField="author" HeaderText="author" SortExpression="author" />
                            <asp:BoundField DataField="genre" HeaderText="genre" SortExpression="genre" />
                            <asp:BoundField DataField="availability" HeaderText="availability" SortExpression="availability" />
                            <asp:BoundField DataField="owner" HeaderText="owner" SortExpression="owner" />
                            <asp:BoundField DataField="isbn" HeaderText="isbn" SortExpression="isbn" />
                            <asp:BoundField DataField="barcode" HeaderText="barcode" SortExpression="barcode" />
                            <asp:BoundField DataField="amount" HeaderText="amount" SortExpression="amount" />
                            <asp:ButtonField CommandName="text" Text="button" />
                        </Columns>
                    </asp:GridView>

处理问题的脚本:

<script type = "text/javascript">
    function Confirm() {
        var confirm_value = document.createElement("INPUT");
        confirm_value.type = "hidden";
        confirm_value.name = "confirm_value";
        if (confirm("Do you want to rent this book?")) {
            confirm_value.value = "Yes";
        } else {
            confirm_value.value = "No";
        }
        document.forms[0].appendChild(confirm_value);
    }
</script>

在我的 C# 代码中

        protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "text")
        {
            string confirmValue = Request.Form["confirm_value"];
            if (confirmValue == "Yes")
            {
                showMessage("You clicked YES!");
            }
            else
            {
                showMessage("You clicked NO!");
            }
            //GridView2.Rows[int.Parse(e.CommandArgument.ToString())].Cells[0].Text); -> cell value of clicked row
        }
        }
    private void showMessage(string text)
    {
        string script = "alert(\"" + text + "\");";
        ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true);
    }

但我不知道如何将脚本添加到 gridView 按钮,有什么帮助吗?

【问题讨论】:

    标签: javascript c# asp.net button gridview


    【解决方案1】:

    您可以为此使用 OnClientClick

    <asp:ButtonField CommandName="text" Text="button" OnClientClick="return Confirm();"/>
    

    你的 javascript 函数看起来像

    <script type = "text/javascript">
    function Confirm() {
    
        if (confirm("Do you want to rent this book?")) {
            return true;
        } else {
            return false;
        }
    
    }
    </script>
    

    无需在隐藏字段中存储值,因为如果用户单击“否”,则页面不会回发。

    【讨论】:

    • OnClientClick 对 gridView 按钮无效,我无法使用此解决方案,已尝试过
    【解决方案2】:

    自己想通​​了怎么做,按钮需要转移到templateField,然后可以添加onClientClick

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      相关资源
      最近更新 更多