【问题标题】:C#: Hyperlink in the first gridview stops working when the 2nd gridview in the same page gets populatedC#:当同一页面中的第二个网格视图被填充时,第一个网格视图中的超链接停止工作
【发布时间】:2018-05-06 13:47:42
【问题描述】:

我在一个页面中有 2 个网格视图。第一个在页面加载时获取数据,第二个 gridview 在单击按钮时获取数据。在第二个 gridview 填充数据之前,第一个 gridview 中的超链接可以正常工作。但是一旦单击按钮并填充第二个网格视图,第一个网格视图中的超链接就不起作用。它的外观类似于超链接,但是当我将光标指向它时,它不会显示链接,也不会打开 url。但是,第二个 gridview 中的超链接可以正常工作。

点击按钮后超链接失效的Gridview:

<asp:GridView ID="GridView2" runat="server" AllowSorting="True" AutoGenerateColumns="False"
                DataSourceID="Saved_Work" Style="float: left; font-size: small; position: relative;
                width: 82%; position: relative; top: 0px; height: 55px; font-size: small; text-align: left;
                left: 30px;" align="left">
                <Columns>
                    <asp:TemplateField HeaderText="ID">
                        <ItemTemplate>
                            <asp:HyperLink ID="Continue_SavedWork"  runat="server" NavigateUrl='<%# Eval("ID", "~/EditSavedJob.aspx?ID={0}") %>'
                                Text='<%# Eval("ID") %>'></asp:HyperLink>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="UserID" HeaderText="User" SortExpression="UserID" />
                    <asp:BoundField DataField="Date_Created" HeaderText="Date_Created" SortExpression="Date_Created" />
                </Columns>
            </asp:GridView>

按钮:

<asp:Button ID="Button1" runat="server" OnClick="FillGridView" Text="Search" Style="font-size: small;
                position: relative; text-align: left; top: 0px; left: 280px; border: 1px ridge #2F10AB" />

在单击按钮时绑定的 Gridview:

    <asp:GridView ID="GridView1" runat="server" Height="27px" OnRowUpdating="EditStatus_Click"
                Style="left: 120px; position: relative; width: 82%; top: 0px; text-align: center;
                font-size: small;" Width="361px" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField DataField="JobNumber" HeaderText="JobNumber" />
                    <asp:BoundField DataField="CustomerName" HeaderText="CustomerName" />
                    <asp:BoundField DataField="JobLocation" HeaderText="JobLocation" />
                    <asp:BoundField DataField="StartDate" HeaderText="StartDate" DataFormatString="{0:MM/dd/yyyy}" />
                    <asp:BoundField DataField="Status" HeaderText="Status" />
                    <asp:TemplateField HeaderText="">
                        <ItemTemplate>
                            <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("JobID", "~/JobDetails.aspx?JobID={0}") %>'
                                Text='Edit Job' />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="">
                        <ItemTemplate>
                            <asp:HyperLink ID="Tickets" runat="server" NavigateUrl='<%# string.Format("~/Tickets.aspx?JobId={0}&JobNumber={1}",
    HttpUtility.UrlEncode(Eval("JobId").ToString()), HttpUtility.UrlEncode(Eval("JobNumber").ToString())) %>'
                                Text='Tickets' />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Update Status">
                        <ItemTemplate>
                            <asp:DropDownList ID="StatusDD" runat="server" Style="position: relative; font-size: small;
                                left: 5%; font-family: 'Segoe UI'; border: 1px ridge #2F10AB; background-color: #F7F7F7"
                                AutoPostBack="True">
                                <asp:ListItem> </asp:ListItem>
                                <asp:ListItem>Submitted</asp:ListItem>
                                <asp:ListItem>Closed</asp:ListItem>
                                <asp:ListItem>Void</asp:ListItem>
                            </asp:DropDownList>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:ButtonField ButtonType="Button" CommandName="Update" Text="Save" />
                    <asp:TemplateField HeaderText="Download PDF">
                        <ItemTemplate>
                            <%--<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("JobID", "~/GeneratePDF.aspx?JobID={0}") %>' Text='View' />--%>
                            <asp:Button ID="View" runat="server" OnClick="View_Click" Text="PDF" Style="text-align: right" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>

按钮的服务器端代码:

protected void FillGridView(object sender, EventArgs e)
    {
        GridLabel.Enabled = true;
        GridLabel.Text = "Search Results";
        string strConnection = ConfigurationManager
                .ConnectionStrings["test_rashmiConnectionString"].ConnectionString;

        using (SqlConnection con = new SqlConnection(strConnection))
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;

            StringBuilder sbCommand = new
                StringBuilder("select J.JobNumber,J.Status,J.JobID,C.Name as CustomerName, C.StartDate,C.JobLocation from JobDetails J inner join CustomerDetails C on J.CustomerID=C.ID where 1=1 ");

            if (CustomerName.Text != "")
            {
                sbCommand.Append(" AND C.Name=@CustomerName");
                SqlParameter param = new
                    SqlParameter("@CustomerName", CustomerName.Text);
                cmd.Parameters.Add(param);
            }
            if (JobNumber.Text != "")
            {
                sbCommand.Append(" AND J.JobNumber=@JobNumber");
                SqlParameter param = new
                    SqlParameter("@JobNumber", JobNumber.Text);
                cmd.Parameters.Add(param);
            }
            if (FromDate.Text != "" && ToDate.Text != "")
            {
                sbCommand.Append(" AND C.StartDate between @FromDate and @ToDate");
                SqlParameter param1 = new
                    SqlParameter("@FromDate", FromDate.Text);
                SqlParameter param2 = new
                    SqlParameter("@ToDate", ToDate.Text);
                cmd.Parameters.Add(param1);
                cmd.Parameters.Add(param2);
            }
            if (JobLocation.Text != "")
            {
                sbCommand.Append(" AND C.JobLocation= @JobLocation ");
                SqlParameter param = new
                    SqlParameter("@JobLocation", JobLocation.Text);
                cmd.Parameters.Add(param);
            }
            sbCommand.Append(" Order by C.StartDate desc");

            if (CustomerName.Text == "" && JobNumber.Text == "" && FromDate.Text == "" && ToDate.Text == "" && JobLocation.Text == "")
            {
                sbCommand = new StringBuilder("select top 10 J.JobNumber,J.Status,J.JobID,C.Name as CustomerName, C.StartDate,C.JobLocation from JobDetails J inner join CustomerDetails C on J.CustomerID=C.ID where 1=1 Order by C.StartDate desc");
            }

            cmd.CommandText = sbCommand.ToString();
            cmd.CommandType = CommandType.Text;
            con.Open();
            SqlDataReader rdr  = cmd.ExecuteReader();
            GridView1.DataSource = rdr;          
            GridView1.DataBind();

            GridView2.DataSource = Saved_Work;
            GridView2.DataBind();
        }
    }

【问题讨论】:

  • 请同时发布 aspx 代码和服务器端代码
  • @MohamedNajiullah,我已经用包含的代码编辑了我的帖子

标签: c# asp.net gridview hyperlink


【解决方案1】:

我注意到在填充第二个网格视图后,其他控件也被禁用。然后我注意到按住按钮的 div 和超链接不起作用的第一个 gridview 的高度小于第一个 gridview。因此,在填充第二个网格视图后,主 div 高度之外的任何控件都将被禁用。我增加了主 div 的高度,它解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    相关资源
    最近更新 更多