我正在学习如何根据特定列的值更改GridView行的颜色的教程:https://www.youtube.com/watch?v=F7ADEYhwqxk,但我找不到该行的替代方案:
int stock = Convert.ToInt32(GridView1.Rows[i].Cells[4].Text);
这一行产生了一个int的值,但是我需要一个string的值。
string cell = Convert.ToString(GridView1.Rows[i].Cells[11].Text);
以及
string cell = (GridView1.Rows[i].Cells[11].Text);
但都没有从GridView列中获取特定值并将其存储在字符串中。
更新:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" DataKeyNames="ID"
DataSourceID="SqlAdmin" OnRowDataBound="GridView1_RowDataBound" PageSize="150" Width="100%">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" InsertVisible="False" ReadOnly="True" Visible="False"></asp:BoundField>
<asp:TemplateField HeaderText="Comment" SortExpression="COMMENT">
<ControlStyle Width="800px" />
<HeaderStyle Wrap="False" />
<EditItemTemplate>
<asp:TextBox ID="txtCOMMENT" runat="server" Text='<%# Bind("COMMENT") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="COMMENTtxt" runat="server"
Text='<%# Bind("COMMENT") %>'></asp:TextBox>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Part #" SortExpression="PART_NO">
<EditItemTemplate>
<asp:TextBox ID="txtPartNo" runat="server" Text='<%# Bind("PART_NO") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="PartNotxt" runat="server"
Text='<%# Bind("PART_NO") %>'></asp:TextBox>
</ItemTemplate>
<ControlStyle Width="150px" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Notes" SortExpression="NOTE">
<EditItemTemplate>
<asp:TextBox ID="txtNOTE" runat="server" Text='<%# Bind("NOTE") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="NOTEtxt" runat="server"
Text='<%# Bind("NOTE") %>'></asp:TextBox>
</ItemTemplate>
<ControlStyle Width="500px" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
更改颜色:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
TextBox COMMENTtxt = (TextBox)gRow.FindControl("COMMENTtxt");
if (COMMENTtxt == "x")
{
GridView1.Rows[i].BackColor = Color.Yellow;
}
else
{
GridView1.Rows[i].BackColor = Color.White;
}
}
}
1条答案
按热度按时间5kgi1eie1#
好吧,这就是为什么它的"往往"是一个真正的好主意,张贴一些标记。
请记住以下规则:
对于自动生成(甚至不是自动生成)的数据绑定字段,则使用. cells []集合。
但是,对于模板化列,则不能使用cells []集合,而必须使用find控件。
因此,以gv为例:
我们"混合"了绑定字段(细胞集合)和一些普通的jane常规控件(复选框、按钮和描述标签)。
因此,当我们单击一个行按钮时,让我们获取复选框值(活动-模板化控件-因此"查找控件"
让我们获取HotelName(绑定字段-so cells []集合)
然后让我们抓取Description(一个标签-所以再次查找控件)。
要加载的代码如下:
现在我们看到/有了这个:
好了,现在我们的row按钮click了,同样的,这个按钮只是一个普通的jane按钮,有一个click事件。
因此,按钮的代码如下所示:
输出:
因此,请注意对模板化列使用"查找控件"。
还需要注意的是,datakeys的使用。这允许我获得"隐藏"(仅服务器端-为了安全!!!)的数据库PK id,但它不会在标记中暴露,也不会在标记中要求,但一旦我有了行索引,那么我就可以获得/使用/拥有/享受数据库PK行值的使用,但永远不必包括它,也不会在GV标记中显示它。
Edit#2:更改GV中的一些颜色
在我上面的示例gv中,假设我们只想用蓝色突出显示活动的酒店,我们将突出显示HotelName(单元格集合),并突出显示描述(标签-(必须使用findcontrol)。
因此,在行数据绑定中,我们将/可能有以下代码:
现在我们看到这个
事实上,对于"突出显示",您可以使用Cells集合,因为即使控件也被放置在这些单元格中。然而,上面确实展示了如何获取/抓取/使用控件。
但是,对于背景颜色,我们可以使用细胞集合。
让我们把蓝色调亮一点,使用单元格,然后这样:
现在我们得到这个: