【发布时间】:2016-05-06 03:36:21
【问题描述】:
好的,本周早些时候我在根据条件突出显示 GridView 中的单元格方面得到了一些帮助。
现在,我想将下拉列表添加到列状态(完成或未完成)。我让它工作了,但我不知道如何在使用新用户输入更新字段后更改颜色。
我尝试使用以下代码来执行此操作,但我猜我需要调用 DDL 或模板?
关于如何实现这一点的任何想法?
我仍然没有运气。看起来当状态字段通过下拉列表更新时,它不会解释新数据(自动回发设置为 true。)基本上,它认为该值仍然是“null”。有什么想法吗?
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataKeyNames="SID" DataSourceID="SqlDataSource2" OnDataBound="GridView2_SelectedIndexChanged" OnSelectedIndexChanged="GridView2_SelectedIndexChanged">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="SID" HeaderText="SID" InsertVisible="False" ReadOnly="True" SortExpression="SID" />
<asp:BoundField DataField="Servers" HeaderText="Servers" SortExpression="Servers" />
<asp:TemplateField HeaderText="Status" SortExpression="Status">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Status") %>' OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem>done</asp:ListItem>
<asp:ListItem>not done</asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Status") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
后面的代码:
protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView2.Rows)
{
if (row.Cells[3].Text == "done")
{
row.BackColor = System.Drawing.Color.LimeGreen;
}
else if (row.Cells[3].Text == "not done")
{
row.BackColor = System.Drawing.Color.Red;
}
}
}
【问题讨论】:
标签: c# asp.net visual-studio gridview dropdown