我的“医院状态”字段用下拉列表显示,点“编辑”进入编辑状态后,下拉列表根据数据源的查询结果选定SelectedIndex,这个过程应该写在什么事件里,又该如何写(好像没有Editing一类的事件)?<asp:DetailsView ID="DetailsView1" runat="server" Height="48px" Style="z-index: 102;
left: 614px; position: absolute; top: 173px" Width="349px" AllowPaging="True" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="True" AutoGenerateRows="False" DataKeyNames="Hos_ID" DataSourceID="SqlDataSource2" OnItemUpdated="DetailsView1_ItemUpdated" EnableTheming="False" BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical">
<Fields>
<asp:BoundField DataField="Hos_ID" HeaderText="医院编号" InsertVisible="False" ReadOnly="True"
SortExpression="Hos_ID" />
<asp:BoundField DataField="Hos_Name" HeaderText="医院名称" SortExpression="Hos_Name" />
<asp:BoundField DataField="Hos_Type" HeaderText="医院类型" SortExpression="Hos_Type" />
<asp:BoundField DataField="Hos_Level" HeaderText="医院级别" SortExpression="Hos_Level" />
<asp:TemplateField HeaderText="医院状态" SortExpression="Hos_State">
<EditItemTemplate>
<asp:DropDownList ID="ddlstate" runat="server" DataSource='<%# ddlstate_bind() %>' AutoPostBack="true"></asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="ddlstate" runat="server" DataSource='<%# ddlstate_bind() %>' AutoPostBack="true"></asp:DropDownList>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("Hos_State") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="医院简介" SortExpression="Hos_Present">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Hos_Present") %>' TextMode="MultiLine"></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Hos_Present") %>' TextMode="MultiLine"></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Hos_Present") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Fields>
<FooterStyle BackColor="#CCCCCC" />
<EditRowStyle BackColor="LightSteelBlue" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<HeaderStyle BackColor="SteelBlue" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#CCCCCC" />
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:reserveConnectionString %>"
SelectCommand="SELECT * FROM T_GH_Hospital WHERE Hos_ID=@Hos_ID "
>
<SelectParameters>
<asp:ControlParameter Name="Hos_ID" ControlID="GridView1" />
</SelectParameters>
</asp:SqlDataSource>
后台代码:public ArrayList ddlstate_bind()
{
ArrayList list = new ArrayList();
list.Add("正常");
list.Add("暂停");
list.Add("冻结");
return list;
}
left: 614px; position: absolute; top: 173px" Width="349px" AllowPaging="True" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="True" AutoGenerateRows="False" DataKeyNames="Hos_ID" DataSourceID="SqlDataSource2" OnItemUpdated="DetailsView1_ItemUpdated" EnableTheming="False" BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical">
<Fields>
<asp:BoundField DataField="Hos_ID" HeaderText="医院编号" InsertVisible="False" ReadOnly="True"
SortExpression="Hos_ID" />
<asp:BoundField DataField="Hos_Name" HeaderText="医院名称" SortExpression="Hos_Name" />
<asp:BoundField DataField="Hos_Type" HeaderText="医院类型" SortExpression="Hos_Type" />
<asp:BoundField DataField="Hos_Level" HeaderText="医院级别" SortExpression="Hos_Level" />
<asp:TemplateField HeaderText="医院状态" SortExpression="Hos_State">
<EditItemTemplate>
<asp:DropDownList ID="ddlstate" runat="server" DataSource='<%# ddlstate_bind() %>' AutoPostBack="true"></asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="ddlstate" runat="server" DataSource='<%# ddlstate_bind() %>' AutoPostBack="true"></asp:DropDownList>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("Hos_State") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="医院简介" SortExpression="Hos_Present">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Hos_Present") %>' TextMode="MultiLine"></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Hos_Present") %>' TextMode="MultiLine"></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Hos_Present") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Fields>
<FooterStyle BackColor="#CCCCCC" />
<EditRowStyle BackColor="LightSteelBlue" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<HeaderStyle BackColor="SteelBlue" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#CCCCCC" />
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:reserveConnectionString %>"
SelectCommand="SELECT * FROM T_GH_Hospital WHERE Hos_ID=@Hos_ID "
>
<SelectParameters>
<asp:ControlParameter Name="Hos_ID" ControlID="GridView1" />
</SelectParameters>
</asp:SqlDataSource>
后台代码:public ArrayList ddlstate_bind()
{
ArrayList list = new ArrayList();
list.Add("正常");
list.Add("暂停");
list.Add("冻结");
return list;
}
{
if (e.NewMode.ToString() == "Edit")
{
DropDownList ddl = (DropDownList)((DetailsView)sender).FindControl("ddlstate1");
switch (((Label)(((DetailsView)sender).FindControl("lblstate"))).Text.ToString())
{
case "正常":
ddl.SelectedIndex = 0;
break;
case "暂停":
ddl.SelectedIndex = 1;
break;
case "冻结":
ddl.SelectedIndex = 2;
break;
default:
break;
}
}
}
写了之后,点击“编辑”报错:未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误:
行 40: {
行 41: case "正常":
行 42: ddl.SelectedIndex = 0;
行 43: break;
行 44: case "暂停":
源文件: e:\Project\temp\MyWebApp\MyWebApp\Sys_admin\Sys_admin_hosmgr.aspx.cs 行: 42
如果你是要刷新值的 加一个change事件
进入“编辑”状态之后,用DropDownList(已提前加入了三个状态)显示。我想让DropDownList显示它应该显示的值,但进入“编辑”状态后,DropDownList总是显示第一个索引的值。我想让DropDownList显示它应该显示的值,这个过程在哪个事件里面写?
{
if (IsPostBack)
{
DetailsView detailsView = (DetailsView)sender;
if (detailsView.CurrentMode == DetailsViewMode.Edit)
{
DropDownList dropDownList = (DropDownList)detailsView.FindControl("DropDownList1");
dropDownList.Items.Add(new ListItem("text", "value"));
}
}
}
在插入(DetailsView1_ItemInserting)或更新(DetailsView1_ItemUpdating)事件中
获取