C# 在GridView中对DropDownList选定值使用Eval
现在,我有一个名为“PROCESS_FLAG”的数据库字段,其中包含文本值(a、I、E、C),我希望能够根据PROCESS_FLAG的值更改dropdownlist列的默认选定值,但我不确定从这里转到哪里 以下是我拥有的GridView的代码:C# 在GridView中对DropDownList选定值使用Eval,c#,asp.net,oracle,drop-down-menu,eval,C#,Asp.net,Oracle,Drop Down Menu,Eval,现在,我有一个名为“PROCESS_FLAG”的数据库字段,其中包含文本值(a、I、E、C),我希望能够根据PROCESS_FLAG的值更改dropdownlist列的默认选定值,但我不确定从这里转到哪里 以下是我拥有的GridView的代码: <asp:BoundField DataField="REQUESTQTY" HeaderText="Request Quantity" SortExpression="REQUESTQTY" />
<asp:BoundField DataField="REQUESTQTY" HeaderText="Request Quantity"
SortExpression="REQUESTQTY" />
<asp:BoundField DataField="MOVEFROM" HeaderText="Move From"
SortExpression="MOVEFROM" />
<asp:BoundField DataField="MOVETO" HeaderText="Move To"
SortExpression="MOVETO" />
<asp:BoundField DataField="COMPLETEDBY" HeaderText="Completed By"
SortExpression="COMPLETEDBY" Visible="false"/>
<asp:BoundField DataField="COMPLETION_DATE" HeaderText="Completion Date"
SortExpression="COMPLETION_DATE" />
<asp:BoundField DataField="COMMENTS" HeaderText="Comments"
SortExpression="COMMENTS" Visible="false" />
<asp:BoundField DataField="RESPONSETIME" HeaderText="Response Time"
SortExpression="RESPONSETIME" Visible="false" />
<asp:BoundField DataField="PROCESS_FLAG" HeaderText="Process Flag"
SortExpression="PROCESS_FLAG" />
<asp:BoundField DataField="UNIQUEKEY" HeaderText="Unique Key"
SortExpression="UNIQUEKEY" Visible="true" />
<asp:TemplateField HeaderText="Send To...">
<ItemTemplate>
<asp:DropDownList ID="StatusDD" runat="server" AutoPostBack="false" OnSelectedIndexChanged="StatusDD_SelectedIndexChanged">
<asp:ListItem Value="A">Active</asp:ListItem>
<asp:ListItem Value="C">Complete</asp:ListItem>
<asp:ListItem Value="I">In Process</asp:ListItem>
<asp:ListItem Value="E">Error</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
活跃的
完成
进行中
错误
我想根据PROCESS_标志的值设置下拉列表的默认选定值
在此方面的任何帮助都将不胜感激。我根本不是一个具备评估功能的专业人士
谢谢 在.aspx页面的gridview中添加OnRowDataBound属性:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" OnRowDataBound="GridViewRowEventHandler">
这应该会让您更进一步:)编译器说我没有对“e.Row”的引用。我缺少什么指令?受保护的void GridViewRowEventHandler(对象发送方,GridViewRowEventArgs e)您是否创建了此方法?如果你把代码放在那里,你应该可以访问e.RowYup,对不起,那个错误只是我的输入错误。这是说StatusDD现在在当前上下文中不存在。太棒了,非常感谢。我将尝试一下并发布我的发现。:)是的,我不知道你是如何命名你的属性的,但是我的答案应该会指引你正确的方向。如果您有任何问题,请告诉我
<asp:BoundField DataField="PROCESS_FLAG" HeaderText="Process Flag"
SortExpression="PROCESS_FLAG" />
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="process_Flags" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PROCESS_FLAG").ToString()%>'/>
</ItemTemplate>
</asp:TemplateField>
protected void GridViewRowEventHandler(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label flag = (Label)e.Row.FindControl("process_Flags");
DropDownList ddl = (DropDownList)e.Row.FindControl("StatusDD");
if (flag.Text == "A")
{
ddl.SelectedValue = "A";
}
//add more conditions here..
}
}