<EditItemTemplate>
<asp:UpdatePanel id="UpdatePanel2" runat="server" UpdateMode="Conditional">
<contenttemplate>
<asp:DropDownList id="ddlProvince" runat="server" DataSourceID="ObjectDataSource4" __designer:wfdid="w61" OnDataBound="ddlProvince_DataBound" DataTextField="name" DataValueField="code" AutoPostBack="True"></asp:DropDownList>
<asp:ObjectDataSource id="ObjectDataSource4" runat="server" TypeName="Biz.Bll.Info.area" SelectMethod="GetListForLevel">
<SelectParameters>
<asp:Parameter DefaultValue="1" Name="Levels" Type="int32" />
<asp:Parameter DefaultValue="AreaTitle_Lv1" Name="MessageID" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:DropDownList id="ddlCity" runat="server" DataSourceID="ObjectDataSource5" __designer:wfdid="w62" OnDataBound="ddlCity_DataBound" DataTextField="name" DataValueField="code"></asp:DropDownList>
<asp:ObjectDataSource id="ObjectDataSource5" runat="server" TypeName="Biz.BLL.Info.area" SelectMethod="GetListForUpcode" __designer:wfdid="w64">
<SelectParameters>
<asp:ControlParameter ControlID="ddlProvince" PropertyName="SelectedValue" DefaultValue="-2" Name="UpCode" Type="Int32"></asp:ControlParameter>
<asp:Parameter DefaultValue="AreaTitle_Lv2" Name="MessageID" Type="String"></asp:Parameter>
</SelectParameters>
</asp:ObjectDataSource>
</contenttemplate>
</asp:UpdatePanel>
</EditItemTemplate>在保存的时候,发现只能取到ddlProvince的值,而ddlCity的值取到的确是默认值。
继续刷新下才能取到ddlCity的正确的值。
问题:为什么不能在保存的时候就正确的取到ddlProvince和ddlCity的值?而刷新下却又可以呢?
取到的只是他的DefaultValue.
==
<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
在我点击保存的时候,它只保存了ddlProvince的值和ddlCity的默认值,可是我继续刷新下就它就会把ddlProvince的值和ddlCity的值都保存起来。为什么会出现这种情况呢?
我的这个参数设置就是根据选择的省来刷新县市的。
这个是没有问题的。
如何保存的?贴几行代码。你是在RowUpdating事件中捕获结果吗?
我是在方法中保存的。void ObjectDataSource1_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
...
a.area= "#"+ddlProvince.SelectedItem.Value + "#,#" + ddlCity.SelectedItem.Value + "#";
...
}
{
Biz.Model.Ex.Users obj = (Biz.Model.Ex.Users)ViewState["obj"];
Biz.BLL.Info.area area = new Biz.BLL.Info.area();
DropDownList ddlProvince = (DropDownList)sender;
int areaUpcode = area.GetUpCode(obj.areacode); try
{
ddlProvince.Items.FindByValue(areaUpcode.ToString()).Selected = true;
}
catch
{ }
} protected void ddlCity_DataBound(object sender, EventArgs e)
{
Biz.Model.Ex.Users obj = (Biz.Model.Ex.Users)ViewState["obj"];
DropDownList ddlCity = (DropDownList)sender; try
{
ddlCity.Items.FindByValue(obj.areacode.ToString()).Selected = true;
}
catch
{ }
}
汗……
原来是DetailsView里的ViewState=False这里设置错误。