DG的绑定没有放在 ispostback 中,在编辑状态之下的几个问题DG 中发了模板列,代码如下:
<asp:TemplateColumn HeaderText="数量">
 <ItemTemplate>
   <asp:Label id=Label3 runat="server" Width="45px" text='<%# DataBinder.Eval(Container.DataItem, "QTY") %> '>
  </asp:Label>
</ItemTemplate>
<EditItemTemplate>
  <asp:TextBox id=Txt_Count runat="server" Width="45px" text='<%# DataBinder.Eval(Container.DataItem, "QTY") %> '>
 </asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>显示的时候出现lable3 中的内容,编辑状态之下显示Txt_Count 中的内容,并且可以更改,1---取不到更改textbox 之后的值?TextBox Txt_Count    =(TextBox)e.Item.FindControl("Txt_Count");
TextBox Txt_Count    =(TextBox)e.Item.Cells[8].Controls[1];
TextBox Txt_Count    =(TextBox)dg1.Items[e.Item.ItemIndex].FindControl("Txt_Count");取得的都是更改之前的值????

解决方案 »

  1.   

    不放到ispostback中是不行的。回发后是先执行 page_load 中的内容
      

  2.   

    // 以下是用模板列更改数据项
    // 可同时更改多行数据项
    // 应该可以解决你的问题
    // 无技术含量,主要是利用ViewState保存更改前的值,如果点取消,就恢复此值.-----------------------------------
    private void dg_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    TextBox txtOrderSKUQuantity;
    TextBox     txtOrderSKUMemo;    
    LinkButton  LbtnEdit;
    LinkButton  LbtnOK;
    LinkButton  LbtnCancel;
          
    txtOrderSKUQuantity = e.Item.Cells[7].Controls[1] as TextBox;
    txtOrderSKUMemo     = e.Item.Cells[8].Controls[1] as TextBox;
    LbtnEdit            = e.Item.FindControl("LinkButton1") as LinkButton;
    LbtnOK              = e.Item.FindControl("LinkButton2") as LinkButton;
    LbtnCancel          = e.Item.FindControl("LinkButton3") as LinkButton;
    switch (e.CommandName)
    {
    case "Edit":
    {
    // 改变样式
    txtOrderSKUQuantity.ReadOnly = false;
    txtOrderSKUQuantity.BorderStyle = BorderStyle.Groove;
    txtOrderSKUQuantity.BackColor = Color.LightBlue; txtOrderSKUQuantity.BorderWidth = 1;  
    txtOrderSKUMemo.ReadOnly = false;
    txtOrderSKUMemo.BorderStyle = BorderStyle.Groove;
    txtOrderSKUMemo.BackColor = Color.LightBlue;
    txtOrderSKUMemo.BorderWidth = 1; // 保存原始值
    this.ViewState[e.Item.ItemIndex.ToString()+"SKUQuantity"] = txtOrderSKUQuantity.Text;
    this.ViewState[e.Item.ItemIndex.ToString()+"SKUMemo"] = txtOrderSKUMemo.Text;

    // 改变状态
    LbtnEdit.Visible          = false;
    LbtnOK.Visible            = true;
    LbtnCancel.Visible        = true;
    break;
    }
    case "OK":
    {
    try
    {
    int MyCount = Convert.ToInt32(txtOrderSKUQuantity.Text);
    if (txtOrderSKUQuantity.Text.Trim() == string.Empty)
    {
    Page.RegisterStartupScript("200604031428","<script language=javascript>alert('"+"数量不允许为空!"+"');</script>");
    }
    else if(MyCount < 1)
    {
                                Page.RegisterStartupScript("200604031429","<script language=javascript>alert('"+"数量值必须大于0!"+"');</script>");                            
    }
    else
    {
    txtOrderSKUQuantity.ReadOnly    = true;
    txtOrderSKUQuantity.BorderStyle = BorderStyle.None;
    txtOrderSKUQuantity.BackColor = Color.White;
    txtOrderSKUQuantity.BorderWidth = 0;  
    txtOrderSKUMemo.ReadOnly = true;
    txtOrderSKUMemo.BorderStyle     = BorderStyle.None;
    txtOrderSKUMemo.BackColor = Color.White;
    txtOrderSKUMemo.BorderWidth = 0; LbtnEdit.Visible = true;
    LbtnOK.Visible = false;
    LbtnCancel.Visible = false;

    // 更新数据表内容
    if(this.ViewState["OverTable"] != null)
    {
    // OverSKUTable 表为DG的数据源表
    OverSKUTable = this.ViewState["OverTable"] as DataTable;
    OverSKUTable.Rows[e.Item.DataSetIndex][SKUData.ORDERSKUQUANTITY_FIELD] = txtOrderSKUQuantity.Text.Trim();
    OverSKUTable.Rows[e.Item.DataSetIndex][SKUData.ORDERSKUMEMO_FIELD] = txtOrderSKUMemo.Text;                                 
    this.ViewState["OverTable"] = OverSKUTable;
    }

    }
    }
    catch
    {
    Page.RegisterStartupScript("200604031446","<script language=javascript>alert('"+"只能输入数量!"+"');</script>");
    }
    break;
    }
    case "Cancel":
    { txtOrderSKUQuantity.ReadOnly    = true;
    txtOrderSKUQuantity.BorderStyle = BorderStyle.None;
    txtOrderSKUQuantity.BackColor = Color.White;
    txtOrderSKUQuantity.BorderWidth = 0;  
    txtOrderSKUMemo.ReadOnly = true;
    txtOrderSKUMemo.BorderStyle     = BorderStyle.None;
    txtOrderSKUMemo.BackColor = Color.White;
    txtOrderSKUMemo.BorderWidth = 0; txtOrderSKUQuantity.Text = this.ViewState[e.Item.ItemIndex.ToString()+"SKUQuantity"] as String;
    txtOrderSKUMemo.Text = this.ViewState[e.Item.ItemIndex.ToString()+"SKUMemo"] as String;   LbtnEdit.Visible = true;
    LbtnOK.Visible = false;
    LbtnCancel.Visible = false;
    this.SaveOrderbtn.Enabled = true;
    break;
    }
    }
    }-----------------------------------
    呵.. 挺乱的.. 建议复制到IDE里再看...