<asp:gridview id="gvDocStatus" forecolor="#333333" cellpadding="4" runat="server"
                    autogeneratecolumns="False" showfooter="True" datakeynames="StatusID" onrowcommand="gvDocStatus_RowCommand"
                    onrowcancelingedit="gvDocStatus_RowCancelingEdit" onrowupdating="gvDocStatus_RowUpdating"
                    onrowediting="gvDocStatus_RowEditing" onrowdeleting="gvDocStatus_RowDeleting"
                    onrowdatabound="gvDocStatus_RowDataBound" allowpaging="True" onpageindexchanged="gvDocStatus_PageIndexChanged"
                    onpageindexchanging="gvDocStatus_PageIndexChanging">
            <Columns>
                <asp:TemplateField ShowHeader="False">
                    <EditItemTemplate>
                        <asp:LinkButton ID="lbnUpdate" runat="server" CausesValidation="True" CommandName="Update" Text="Save"></asp:LinkButton>
                        <asp:LinkButton ID="lbnCancel" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:LinkButton ID="lbInsert" runat="server" CommandName="Insert" Text="Add" ValidationGroup="addVal" EnableViewState="false"></asp:LinkButton>
                    </FooterTemplate>
                    <ItemTemplate>
                        <asp:LinkButton ID="lbnEdit" runat="server" CausesValidation="False" CommandName="Edit" Text="Edit"></asp:LinkButton>
                        <asp:LinkButton ID="lbDelete" runat="server" CausesValidation="False" CommandName="Delete"
                                OnClientClick="if(!confirm('Are you sure you want to delete this record?')) return false;"
                                Text="Delete" EnableViewState="false"></asp:LinkButton>
                    </ItemTemplate>
                    <HeaderStyle BackColor="#5070B0" Font-Bold="True" ForeColor="White" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Doc Status">
                    <EditItemTemplate>
                        <asp:TextBox ID="txtEditStatus" runat="server" Text='<%# Eval("StatusValue") %>' style="text-transform:none"></asp:TextBox>
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtInsertStatus" runat="server" Text="" style="text-transform:none"></asp:TextBox>
                    </FooterTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lblStatus" runat="server" Text='<%# Bind("StatusValue") %>'></asp:Label>
                    </ItemTemplate>
                    <HeaderStyle BackColor="#5070B0" Font-Bold="True" Font-Size="8pt" ForeColor="White" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="InActive">
                    <EditItemTemplate>
                        <asp:CheckBox ID="chkEditActive" runat="server" Checked='<%# Bind("isActive") %>'></asp:CheckBox>
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:CheckBox ID="chkInsertActive" runat="server" Checked=false></asp:CheckBox>
                    </FooterTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkIsActive" runat="server" Checked='<%# Bind("isActive") %>' Enabled=false></asp:CheckBox>
                    </ItemTemplate>
                    <HeaderStyle BackColor="#5070B0" Font-Bold="True" Font-Size="8pt" ForeColor="White" />
                </asp:TemplateField>
                
            </Columns>
            <EmptyDataTemplate>
                <tr class="dg_header">
                    <th scope="col">
                        &nbsp;</th>
                    <th scope="col">
                        Doc Status</th>
                    <th scope="col">
                        InActive</th> 
                </tr>
                <tr class="dg_item">
                    <td>
                        <asp:LinkButton ID="lbInsert" runat="server" CommandName="EmptyInsert" Text="Add" ValidationGroup="addVal"></asp:LinkButton>
                    </td>
                    <td>
                        <asp:TextBox ID="txtInsertStatus" runat="server" Text="" style="text-transform:none"></asp:TextBox>
                    </td>
                    <td>
                        <asp:CheckBox ID="chkInsertActive" runat="server" Checked=false></asp:CheckBox>
                    </td>
                </tr>
            </EmptyDataTemplate>codebehind:
protected void gvDocStatus_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            Microsoft.PartBuilder.Data.Manufacturer mf = new Manufacturer();
            bool bIsAct = true;
            TextBox txtNewValue = (TextBox)gvDocStatus.Rows[e.RowIndex].FindControl("txtEditStatus");
            CheckBox active = (CheckBox)gvDocStatus.Rows[e.RowIndex].FindControl("chkEditActive");
            gvDocStatus.EditIndex = -1;
            DataBindToGV();
        }
********
为什么我取不到txtNewValue 修改后的值,它显示的一直是从数据库邦定过来的值?请大虾指教。。

解决方案 »

  1.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                this.DataBindToGV();
        }    protected void DataBindToGV()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("StatusValue");
            dt.Columns.Add("isActive");
            dt.Columns[1].DataType = true.GetType();
            dt.Columns.Add("field1");
            dt.Columns.Add("field2");        dt.Rows.Add(new object[] { "aaaa",true,"awge","awgaw"});
            dt.Rows.Add(new object[] { "BBBB", false, "AGEGA", "AHW4H" });
            dt.Rows.Add(new object[] { "(*^*", true, "*&^(&", "&^$^" });        dt.AcceptChanges();
            this.gvDocStatus.DataSource = dt;
            this.gvDocStatus.DataBind();
        }    protected void gvDocStatus_RowEditing(object sender, GridViewEditEventArgs e)
        {
            this.gvDocStatus.EditIndex = e.NewEditIndex;
            this.DataBindToGV();
        }
        protected void gvDocStatus_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
                TextBox txtNewValue = (TextBox)gvDocStatus.Rows[e.RowIndex].FindControl("txtEditStatus");
            TextBox1.Text = txtNewValue.Text;//这里可以取到txtNewValue修改后的值
            CheckBox active = (CheckBox)gvDocStatus.Rows[e.RowIndex].FindControl("chkEditActive"); 
            gvDocStatus.EditIndex = -1;
            DataBindToGV(); 
        }
      

  2.   

    to :Eddie005 ,对不起阿哥们,不好使啊,还是显示以前的值,没有取到更改的值。 :(
      

  3.   

    楼主,楼上的方法是对的,你debug下看看!是不是别的原因啊!
      

  4.   

    to: chengjun_java , 我知道 Eddie005的方法是正确的,我也是这么写的,可是我现在在debug环境下,看到的就是错误的信息。有点撞见鬼的感觉。 :(
    请各位多帮帮忙吧
      

  5.   

    <asp:TextBox   ID="txtEditStatus"   runat="server"   Text=' <%#   Eval("StatusValue")   %> '   style="text-transform:none"> </asp:TextBox> !IsPostBack
      

  6.   

    to aqhuoqilin,<asp:TextBox       ID="txtEditStatus"       runat="server"       Text='   <%#       [color=#FF6600]Bind("StatusValue")       %>   '       style="text-transform:none">   </asp:TextBox>[/color] 
    我现在是这么写的,可是还是捕捉不到更新的值,实在不知道什么地方出了问题,谁要是有高招,请多多指教,我实在是没有办法了。。
      

  7.   

    绑定数据的代码放到if(!IsPostBack){}里
      

  8.   

    to sq_zhuyi,
    你实说这样吗?我是这样做的,有问题吗?请指教
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    DataBindToGV();//绑定数据
                }
            }
      

  9.   

    我也是不知道為啥,GRIDVIEW怪怪的,得不到新的值555555555