public DataTable objTable
{
get
{
return ViewState["myTable"] != null ? (DataTable)ViewState["myTable"] : new DataTable();
}
set
{
ViewState["myTable"] = value;
}
}
public void feeLrBtn_click(object sender,EventArgs e)   
{    //检查复选框是否被选 DataTable mydt = objTable; for( int i = 0; i < feeSachGrid.Items.Count; i++ )
{ CheckBox feelrchk = (CheckBox)feeSachGrid.Items[i].FindControl("feeCheck");
if( feelrchk.Checked == true )
{
if(mydt.Rows.Count == 0)
{
mydt.Columns.Add(new DataColumn("feeId",typeof(int)));
mydt.Columns.Add(new DataColumn("feeName", typeof(string)));
mydt.Columns.Add(new DataColumn("feeHow", typeof(int)));
mydt.Columns.Add(new DataColumn("feeRe", typeof(string)));
} string fareId=feeSachGrid.Items[i].Cells[1].Text;
string fareName=feeSachGrid.Items[i].Cells[2].Text;
TextBox fareBox;
fareBox=(TextBox)feeSachGrid.Items[i].FindControl("feeHowTxt");  
TextBox fareMark;
fareMark=(TextBox)feeSachGrid.Items[i].FindControl("feeRe");  DataRow mydr = mydt.NewRow();
mydr[0] =fareId; 
mydr[1] =fareName;
mydr[2] =fareBox.Text.Trim();
mydr[3] =fareMark.Text.Trim();
mydt.Rows.Add(mydr); 

                                        objTable = mydt;
     
}


feeLrGrid.DataSource = objTable;
feeLrGrid.DataBind(); 
}

解决方案 »

  1.   

    在循环后面加上 mydt.AcceptChange() 应该就可以了,  AcceptChange方法名写得不一定对,你看下有这样的方法,接受改变的
      

  2.   

    程序上没啥问题
    if( feelrchk.Checked == true ) 
    {
    //打印一下看有没运行..
    没的话就是feeSachGrid的绑定有问题,可注意下if(!IsPostBack){feeSachGrid.DataBind();}
      

  3.   

    for( int i = 0; i < feeSachGrid.Items.Count; i++ ) 
    { CheckBox feelrchk = (CheckBox)feeSachGrid.Items[i].FindControl("feeCheck"); 
    if( feelrchk.Checked == true ) 

    if(mydt.Rows.Count == 0) 

    mydt.Columns.Add(new DataColumn("feeId",typeof(int))); 
    mydt.Columns.Add(new DataColumn("feeName", typeof(string))); 
    mydt.Columns.Add(new DataColumn("feeHow", typeof(int))); 
    mydt.Columns.Add(new DataColumn("feeRe", typeof(string))); 
    } string fareId=feeSachGrid.Items[i].Cells[1].Text; 
    string fareName=feeSachGrid.Items[i].Cells[2].Text; 
    TextBox fareBox; 
    fareBox=(TextBox)feeSachGrid.Items[i].FindControl("feeHowTxt");  
    TextBox fareMark; 
    fareMark=(TextBox)feeSachGrid.Items[i].FindControl("feeRe"); DataRow mydr = mydt.NewRow(); 
    mydr[0] =fareId; 
    mydr[1] =fareName; 
    mydr[2] =fareBox.Text.Trim(); 
    mydr[3] =fareMark.Text.Trim(); 
    mydt.Rows.Add(mydr);                                         objTable = mydt; 
        

    mydt.AcceptChanges();

      

  4.   

    我的.aspx如下,
    <asp:datagrid id="feeLrGrid" runat="server" OnItemDataBound="feeLrGrid_DataBind" ShowFooter="True"
    DataKeyField="feeId" Width="100%" HeaderStyle-BackColor="#D3D3D3" AutoGenerateColumns="False"
    HeaderStyle-HorizontalAlign="Center">
    <FooterStyle BackColor="#D3D3D3" Font-Bold="True"></FooterStyle>
    <Columns>
    <asp:BoundColumn HeaderText="费用编号" DataField="feeId" />
    <asp:BoundColumn HeaderText="费用名称" DataField="feeName" />
    <asp:BoundColumn HeaderText="金额" DataField="feeHow" />
    <asp:BoundColumn HeaderText="费用扣点或备注" DataField="feeRe" />
    </Columns>
    </asp:datagrid>
      

  5.   

    if( feelrchk.Checked == true ) 

    Response.Write('aaa');//看下这句有没执行..
      

  6.   

    如果没执行就是Page_Load中
    feeSachGrid.DataBind();//加上if(!IsPostBack)