当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,