我正在使用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>
有没有办法做到这一点?
提前致谢。
答案 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" : "" %>' />