【问题标题】:Adding hyperlink in gridview在gridview中添加超链接
【发布时间】:2014-05-13 03:41:01
【问题描述】:

我有一个gridview,它显示了一个包含TaskIdTitleRewardTime AllottedPoster Name 列的所有数据库表。尽管我所有的SqlConnection 代码都存在于另一个用于将数据插入到数据库表中的网络表单上。

这是我在InsertTask.aspx.cs 页面上的代码:

protected void btnPost_Click(object sender, EventArgs e)
{
    string CS = ConfigurationManager.ConnectionStrings["ABCD"].ConnectionString;

    using (SqlConnection con = new SqlConnection(CS))
    {
        SqlCommand cmd = new SqlCommand("spTasks", con);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;

        cmd.Parameters.AddWithValue("@Title", txtTitle.Text);
        cmd.Parameters.AddWithValue("@Body", txtBody.Text);
        cmd.Parameters.AddWithValue("@Reward", txtRewards.Text);
        cmd.Parameters.AddWithValue("@TimeAllotted", txtTime.Text);
        cmd.Parameters.AddWithValue("@PosterName", txtPoster.Text);

        con.Open();
        cmd.ExecuteNonQuery();
        lblStatus.Text = "Task Posted Successfully.";
    }
}

这会将任务成功插入到数据库表中。所以在default.aspx 的新网络表单上,我有一个gridview,它连接到该数据库表并显示表中的任务列表。

同样,我没有在default.aspx.cs上写任何代码。

我需要做的是将Title 作为gridview 中的超链接,我可以单击它并根据行进入不同的页面。可以这样做吗?或者我应该在所有行上使用一个按钮来相应地访问其他页面。怎么可能?

我没有使用gridview 的经验。

【问题讨论】:

  • 您可以在模板字段中使用链接按钮或使用 CommandField 并设置 ButtonType="Link"。

标签: c# asp.net sql gridview


【解决方案1】:
<telerik:GridTemplateColumn HeaderText="Action">
                <ItemTemplate>
                    <a id="A1" runat="server" href='<%#  @"~\Demolink.aspx"+( Eval("Record_ID").ToString()) %>'>
                      <%#Eval("Title ") %> </a>
                </ItemTemplate>
            </telerik:GridTemplateColumn>

【讨论】:

    【解决方案2】:

    根据您的要求将所有数据获取到数据集或数据表并将其绑定到gridview。在 default.aspx 标记中,我们可以通过在 &lt;Columns&gt; 标签中使用 &lt;asp:TemplateField&gt;&lt;ItemTemplate&gt;&lt;/ItemTemplate&gt;&lt;/asp:TemplateField&gt; 以不同的方式将 gridview 列转换为超链接字段

    这里我添加了两个控件,一个是html超链接,另一个是asp:hyperlink

    <asp:GridView runat="server" ID="gvrecords"  AutoGenerateColumns="false" DataKeyNames="Title">
    <Columns>
    <asp:TemplateField>
    <ItemTemplate>
    <asp:HyperLink ID="HyperLink1" Text='<%# Bind("Title") %>' NavigateUrl='<%# Bind("Title", "~/../urpath/{0}") %>' runat="server"/>
    <a href ='<%#"page.aspx?TitleID="+DataBinder.Eval(Container.DataItem,"TitleId") %>'> <%#Eval("Title") %>  </a>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>
    

    【讨论】:

      【解决方案3】:

      是的,当然您可以使用超链接作为标题。要提供超链接,您可以使用以下代码示例中提到的 TemplateField

      <asp:GridView runat="server" ID="gridTask" AutoGenerateColumns="False">
          <Columns>
              <asp:TemplateField>
                  <ItemTemplate>
                      <a href="htttp://www.stackoverflow.com"><%#Eval("Title") %> </a>
                  </ItemTemplate>
              </asp:TemplateField>
              <asp:BoundField DataField="Body" HeaderText="Body" />
              <asp:BoundField DataField="Reward" HeaderText="Reward" />
          </Columns>
      </asp:GridView>
      

      注意:这里我使用了 stackoverflow 网站 url。相反,您可以使用页面的 url。

      【讨论】:

      • 投反对票的人不要在没有评论的情况下投反对票,直到你没有充分的理由投反对票。
      【解决方案4】:
      <asp:TemplateField>
              <ItemTemplate>
                  <a href="htttp://www.mydummyurl.com"><%#Eval("Title") %> </a>
              </ItemTemplate>
       </asp:TemplateField>
      

      这应该可行!

      【讨论】:

      • 您的答案与 SpiderCode 的答案有何不同?请在发布前阅读其他答案..!
      猜你喜欢
      • 2012-10-28
      • 2016-03-15
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多