GridView更新时遇到的问题
GridView更新时遇到的问题前面的代码
<asp:GridView ID="dvSmall" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1"
Width="359px" OnRowDataBound="dvSmall_RowDataBound" DataKeyNames="Id" OnRowUpdating="dvSmall_RowUpdating">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="Id" />
<asp:TemplateField HeaderText="小类名称" SortExpression="SmallClassName">
<EditItemTemplate>
<asp:TextBox ID="tbName" runat="server" Text='<%# Bind("SmallClassName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("SmallClassName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="所属类别" SortExpression="BgClass">
<EditItemTemplate>
<asp:DropDownList ID="ddlBg" runat="server" DataSourceID="ObjectDataSource1"
DataTextField="BgClassName" DataValueField="Id">
</asp:DropDownList>
<asp:HiddenField ID="hfBg" runat="server" Value='<%# Eval("BgClass.Id") %>' />
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllBgClasses"
TypeName="BfCMS.BLL.BgClassManager"></asp:ObjectDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("BgClass.BgClassName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetAllSmallClasses"
TypeName="BfCMS.BLL.SmallClassManager" UpdateMethod="ModifySmallClass">
<UpdateParameters>
<asp:Parameter Name="Id" Type="Int32" />
<asp:Parameter Name="BgClassId" Type="Int32" />
<asp:Parameter Name="SmallClassName" Type="String" />
</UpdateParameters>
</asp:ObjectDataSource>
后面的代码
protected void dvSmall_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState == DataControlRowState.Edit)
{
DropDownList ddlBg = (DropDownList)e.Row.FindControl("ddlBg") as DropDownList;
HiddenField hfBg = (HiddenField)e.Row.FindControl("hfBg") as HiddenField;
ddlBg.SelectedValue = hfBg.Value.Trim();
}
}
protected void dvSmall_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = dvSmall.Rows[dvSmall.EditIndex];
DropDownList ddlBg = (DropDownList)row.FindControl("ddlBg") as DropDownList;
e.NewValues["BgClassId"] = ddlBg.SelectedValue;
}
问题是
有的一行当点编辑后所属类别是正确的,有的则不正确,也就是有的保持了原来的属性,而有的则没有 --------------------编程问答-------------------- 帮顶。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 --------------------编程问答--------------------
虽然我不太懂,但我觉得大牛们对如此长的代码页郁闷! --------------------编程问答-------------------- protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
gv.EditIndex = e.RowIndex;
string str= ((TextBox)gv.Rows[e.RowIndex].FindControl("TextBox1")).Text.Trim(); DropDownList ddlBg = (DropDownList)gv.Rows[e.RowIndex].FindControl("ddlBg") as DropDownList;
} --------------------编程问答-------------------- 如果是手写代码进行数据绑定,请检查Page_Load事件中绑定GridView时是否加了if(!IsPostBack)的判断
补充:.NET技术 , ASP.NET