C# 根据列值动态更改gridview链接按钮的文本
我来自PHP背景。对于从数据库填充的GridView,我有以下代码。我想根据网格中状态列的值更改链接按钮的文本。例如,如果状态列的值为“待定”,则链接按钮应显示文本C# 根据列值动态更改gridview链接按钮的文本,c#,asp.net,C#,Asp.net,我来自PHP背景。对于从数据库填充的GridView,我有以下代码。我想根据网格中状态列的值更改链接按钮的文本。例如,如果状态列的值为“待定”,则链接按钮应显示文本编辑详细信息,而不是查看详细信息。我该怎么做 <asp:GridView ID="empres1" runat="server" AllowPaging="True" AutoGenerateColumns="False" onrowcommand="empres1_RowCommand"
编辑详细信息
,而不是查看详细信息
。我该怎么做
<asp:GridView ID="empres1"
runat="server"
AllowPaging="True"
AutoGenerateColumns="False"
onrowcommand="empres1_RowCommand"
onrowediting="empres1_RowEditing"
onselectedindexchanged="empres1_SelectedIndexChanged1">
<asp:BoundField DataField="Status" HeaderText="Status" />
<asp:BoundField DataField="comments" HeaderText="comments" />
<asp:TemplateField HeaderText="" SortExpression="">
<ItemTemplate>
<asp:LinkButton ID="LinkButtonEdit" runat="server"
CommandName="ShowPopup"
CommandArgument='<%#Eval("EmployeeId") %>'>View Details
</asp:LinkButton>
-------------------^
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
查看详细信息
-------------------^
您可以使用网格视图的服务器端事件:
if(e.Row.RowType == DataControlRowType.DataRow) // (1)
{
// modify the row here
}
(1) 这将跳过页眉和页脚,因此代码仅对“常规”行运行
在//此处修改行
中,您可以访问行内的控件,并对其进行修改
您也可以使用,它具有传递到行的数据信息(以与上一个示例类似的方式)
在这两种情况下,您都有可用的行
,并且您可以。您可能会使用以下属性:
:行的单元格(列)单元格
:行内的控件控件
:它允许您访问绑定到此路由的数据(您可以使用调试器查看它如何进行必要的强制转换)DataItem
过程是查看
DataItem
中的数据,并查找需要修改的控件(或单元格)。(我坚持在调试器上使用断点来浏览属性值……它们有点麻烦,尤其是数据项)。您需要使用RowDataBound事件来动态设置文本。获取对linkbutton的引用,并根据数据项设置其文本。所以你的代码应该是这样的
protected void empres1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton button =
e.Row.Cells[2].FindControl("LinkButtonEdit");
if (button != null)
{
DataRow dr = e.Row.DataItem;
if (dr["status"].ToString() == "Pending")
{
button.Text = "Edit Details";
}
else
{
button.Text = "View Details";
}
}
}
}
代码在语法上可能并不完美,但是您可以从中得到一个想法