繁体   English   中英

使用js / jquery在gridview中的按钮单击结果以几秒钟的时间显示在标签中。

[英]After button click result is displayed in label few seconds in gridview using js/jquery.The gridview in contentpage of masterpage

我有一个母版页并在其中添加scriptmanager。asd.master页是

    <body id="myPage" data-spy="scroll" data-target=".navbar" data-offset="60">
    <form id="form1" runat="server">
        <nav class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="#myPage">Logo</a>
                </div>
                <div class="collapse navbar-collapse" id="myNavbar">
                    <ul class="nav navbar-nav">
                        <li><a href="#home">Home</a></li>
                        <li><a href="#services">Services</a></li>
                        <li><a href="#values">Values</a></li>
                        <li><a href="#about">About us</a></li>
                        <li><a href="#contact">Contact us</a></li>
                    </ul>
                    <ul class="nav navbar-nav navbar-right">
                        <li><a href="my account.aspx"><span class="glyphicon glyphicon-user" style="color:orange"></span> My Account</a></li>
                    </ul>
                </div>
            </div>
        </nav>
        <div class="jumbotron text-center">
            <h2>
                <asp:Label ID="headinglbl" runat="server" CssClass="control-label" Text="Label"></asp:Label></h2>
            <asp:Label ID="usrvstlbl" runat="server" CssClass="control-label" Text="" ForeColor="Red"></asp:Label>
        </div>
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

        </asp:ContentPlaceHolder>
    </form>
</body>

在该主页中,我有4个内容页面,这些内容页面具有gridview和updatepanels。 内容页面之一是...。

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div class="container text-center">
    <div class="row">
        <div class="col-sm-3">                
            <div class="well">         
                <p>

                </p>
            </div>               
        </div>
        <div class="col-sm-7">

            <div class="row">
                <div class="col-sm-12">
                    <div class="panel panel-default text-left">
                        <div class="panel-body">
                            <asp:GridView ID="GridView1" runat="server" CssClass="col-sm-12" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" OnPageIndexChanging="GridView1_PageIndexChanging" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" PageSize="8">
                                <AlternatingRowStyle BackColor="White" />
                                <Columns>
                                    <asp:TemplateField>
                                        <ItemTemplate>
                                            <div class="form-group col-sm-offset-1">
                                                <asp:Label ID="namelbl" runat="server" CssClass="control-label" Text='<%# Eval("LoginUserName") %>'></asp:Label><br />
                                                <asp:Label ID="datelbl" runat="server" CssClass="control-label" Text='<%# Eval("Date", "{0:M-dd-yyyy}") %>'></asp:Label>
                                            </div>
                                            <div class=" col-sm-offset-1">
                                                <asp:Label ID="bkmsglbl" runat="server" CssClass="control-label" Text='<%# Eval("BookInfo") %>'></asp:Label>
                                            </div>

                                            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                                                <ContentTemplate>
                                                    <div class="row">
                                                        <div class="col-sm-offset-1 col-sm-8 form-group">
                                                            <asp:Label ID="avlbkserrlbl" runat="server" CssClass="control-label" Text="" ForeColor="Red"></asp:Label><br />
                                                            <asp:Label ID="avlbkslbl" runat="server" CssClass="control-label" Text="comments:"></asp:Label>
                                                            <asp:TextBox ID="avlbkstxt" runat="server" CssClass="form-control txtbdrclr" TextMode="MultiLine" Rows="2" ToolTip="about book" ValidationGroup="avlbksgrp"></asp:TextBox>
                                                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="avlbkstxt" ErrorMessage="*Fill this" ValidationGroup="avlbksgrp" ForeColor="Red"></asp:RequiredFieldValidator>

                                                        </div>
                                                    </div>
                                                    <div class="row">
                                                        <div class="col-sm-offset-1 col-sm-11 form-group">
                                                            <asp:Button ID="Button1" runat="server" CssClass="btn btnbtn btn-success" Text="Post" ValidationGroup="avlbksgrp" CommandArgument='<%# Eval("ConversationId") %>' CommandName="avlconvrsinsrt" />
                                                        </div>                                                            
                                                    </div>

                                                </ContentTemplate>
                                            </asp:UpdatePanel>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>

                                <EmptyDataTemplate>
                                    <div class="emptytemp">
                                        At present we don't have any result's from your request....
                                    </div>
                                </EmptyDataTemplate>
                                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                                <RowStyle BackColor="#EFF3FB" />

                            </asp:GridView>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="col-sm-2 well">

        </div>
    </div>
</div>
<script type="text/javascript">
      function hideuseravl() {
      window.setTimeout(function () {
      var label = document.getElementById('<%= avlbkserrlbl.ClientID %>');
      if (label != null) {
      label.style.display = 'none';
      }
     }, 6000);
   }
</script>
</asp:Content>

然后我将数据绑定到asdf.aspx.cs中的gridview

protected void Page_Load(object sender, EventArgs e)
{
        if (!IsPostBack)
        {
            GridView1.DataSource = dataaccesslayer.getallavlblbks();
            GridView1.DataBind();
        }
}

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
        if (e.CommandName == "avlconvrsinsrt")
        {
            string logid = Session["uid"].ToString();
            string loguname = Session["uname"].ToString();
            string converid = e.CommandArgument.ToString();
            int rowindx = ((GridViewRow)((Button)e.CommandSource).NamingContainer).RowIndex;
            string avlbkmsg = ((TextBox)GridView1.Rows[rowindx].FindControl("avlbkstxt")).Text;
            Label grderrlbl = (Label)GridView1.Rows[rowindx].FindControl("avlbkserrlbl");

            if (avlbkmsg == "")
            {
                grderrlbl.Text = "Please enter any text";
            }
            else
            {
                dataaccesslayer avlcomtinrtobj = new dataaccesslayer();
                avlcomtinrtobj.avlbkcommtinsrt(converid, logid, loguname, avlbkmsg);
                grderrlbl.Text = "Your commant successfully placed....";
                System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "Script", "hideuseravl();", true);
            }
        }
}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataSource = dataaccesslayer.getallavlblbks();
        GridView1.DataBind();
}

在此代码中,如果提交成功,则在填充文本框后单击gridview中的按钮,然后在labelid中显示一条消息:“ grderrlbl”。我只想在此标签后几秒钟显示此标签,然后隐藏labelid“ grderrlbl”。

我尝试了这个,但是没有用。

function hideuseravl() {

          window.setTimeout(function () {
          var label = document.getElementById('<%= avlbkserrlbl.ClientID %>');
          if (label != null) {
          label.style.display = 'none';
          }
         }, 6000);
        }

textboxid“ avlbkstxt”有一个必填字段验证器,当我单击不带填充文本框的按钮时,此必填字段将显示gridview中的所有文本框。我想在单击按钮的特定行中显示必填字段。

这是您想要的完整(简化)示例。

<%-- .aspx --%>
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="CategoryID" DataSourceID="sqlCat" OnRowCommand="GridView1_RowCommand">
            <Columns>
                <asp:TemplateField HeaderText="CategoryName" SortExpression="CategoryName">
                    <ItemTemplate>
                        <asp:UpdatePanel runat="server" UpdateMode="Conditional">
                            <ContentTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("CategoryID") %>'></asp:Label>
                                <asp:Label ID="Label2" runat="server" Text=""></asp:Label>
                                <asp:TextBox ID="TextBox1" runat="server" Text=""></asp:TextBox>
                                <asp:RequiredFieldValidator ErrorMessage="required" ControlToValidate="TextBox1" runat="server" 
                ValidationGroup='<%#Eval("CategoryID","grp{0}") %>' />
                <%-- diff valGr for each row --%>
                                <asp:Button Text="send" runat="server" ValidationGroup='<%#Eval("CategoryID","grp{0}") %>' CommandName="sendMsg" />
                            </ContentTemplate>
                        </asp:UpdatePanel>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="sqlCat" runat="server" ConnectionString="<%$ ConnectionStrings:NWind %>" SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]"></asp:SqlDataSource>
    </div>
<script type="text/javascript">
    function showMsg(elId) {
        var el = document.getElementById(elId);
        el.style.display = 'inline';
        setTimeout(function () {
            el.style.display = 'none';
        }, 6000);
    }
</script>

后面的代码

//.cs
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "sendMsg")
    {
        //Find row in easy way
        GridViewRow row = ((Button)e.CommandSource).NamingContainer as GridViewRow;
        Label lblErr = row.FindControl("Label2") as Label;
        TextBox txt = row.FindControl("TextBox1") as TextBox;
        if (txt.Text == "test")//put your logic instead
        {
            lblErr.Text = "OK";
        }
        else
        {
            lblErr.Text = "Must be \"test\"";
        }
        //register code (function) which will run after AJAX update
        //Note that label.id comes from here
        ScriptManager.RegisterStartupScript(this, this.GetType(), "myScript", "showMsg('" + lblErr.ClientID + "');", true);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM