在gridview中显示BoundField中的URL

时间:2014-07-07 17:17:59

标签: asp.net sql-server gridview

我正在使用gridview开发一个聊天的Web应用程序....问题是当用户输入链接并将其保存在数据库中时,当在gridview中检索数据时,应该单击该链接能够。我用来检索数据的字段是BoundField。

我不想使用超链接字段,因为在每一行中都会有一个链接。我只想在用户输入链接时显示链接。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataSourceID="AccessDataSource1" CssClass="amit1"  >
                <AlternatingRowStyle BackColor="#CCCCCC" />
                <Columns>
                    <asp:BoundField DataField="m1" HeaderText="Message" SortExpression="m1" >
                    <HeaderStyle Font-Size="Larger" HorizontalAlign="Left" Width="280px" />
                    <ItemStyle Font-Size="Medium" HorizontalAlign="Left" Width="280px" />
                    </asp:BoundField>


                </Columns>
            </asp:GridView>
        <asp:AccessDataSource ID="AccessDataSource1" runat="server" 
                DataFile="~/App_Data/gold.accdb" 


                SelectCommand="SELECT [m1] FROM [Chat_detail] WHERE ([Chat_id] = ?)">
                <SelectParameters>
                    <asp:QueryStringParameter Name="Chat_id" QueryStringField="chat_id" 
                        Type="String" />
                </SelectParameters>
            </asp:AccessDataSource>

有没有办法做到这一点?

提前致谢。

2 个答案:

答案 0 :(得分:1)

添加超链接,利用RowDataBound事件使该超链接基于值显示为tru / false。

见下文:

protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs e)      {         if(e.Row.RowType == DataControlRowType.DataRow)         {         HyperLink hlnk =(HyperLink)e.Row.FindControl(&#34; hlnkUserEnetredLink&#34;);         如果(!String.IsNullOrEmpty(hlnk))            {              hlnk.Visible = true;             }       其他            {              hlnk.Visible = false;            }        }      }

在您的aspx页面中添加超链接 - 在Gridview ..

答案 1 :(得分:0)

您可以根据条件禁用代码中的超链接。注意:使visible = true/false在gridview列中留下一个空单元格。

protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
     // find the HyperLink defined in the fridview definition
     HyperLink myHyperLink = (HyperLink)e.Row.FindControl("hpLinkUrl");

     //userstoredlink is the datasource field that holds the user stored link       
     string userLink =  DataBinder.Eval(e.Row.DataItem, "userstoredlink").ToString();
        if (string.IsNullOrEmpty(userLink))
        { 
            // disable link
            myHyperLink.Enabled = false;
        }
  }
}

请参阅my another post以不同方式添加gridview

的超链接
 <Columns>  
        <asp:TemplateField>
               <ItemTemplate>
                  <asp:HyperLink ID="hpLinkUrl" runat="server" NavigateUrl='<%# Eval("userstoredlink", "{0}") %>' Text="View Details" />
               </ItemTemplate>
        </asp:TemplateField>
 </Columns>  

另外请记住,您需要为gridview定义OnRowDataBound="GridView1_RowDataBound"

或者,如果您不希望在ViewDetails没有值时显示userstoredlink文字,则按以下方式更改hyperlink定义

<asp:HyperLink ID="hpLinkUrl" runat="server" NavigateUrl='<%# Eval("userstoredlink", "{0}") %>' Text='<%# Eval("userstoredlink") != "" ? "View Details" :  "" %>' />