1.
datagrid 显示用户状态操作,当用户没有审核时,用户状态为未开通此时在数据库中为-1表示,当用户通过审核时,用户状态为已审核,此时在数据库中为02.
作法:
datagrid中: <asp:TemplateColumn HeaderText="用户状态">
                      <ItemTemplate>
                          
                      
                           <asp:Button ID="button1" runat="server" Text="审核" CommandName="select" CommandArgument='<%#Eval("UserState") %>' />
                      </ItemTemplate>
                 </asp:TemplateColumn>这个思维为:
页面发生 Page_Load事件,然后发生数据绑定 ,然后发生更新事件 dg_UpdateCommand,然后就是用户状态更新成功。然后再取按钮的CommandName="select"这要在事件中发生
     protected void dg_ItemCommand(object source, DataGridCommandEventArgs e)
           {
               if (e.CommandName == "select")
               {                   string UserState = Convert.ToString(e.CommandArgument);
                   dg_UpdateCommand(source, e);
                   DataBindDg();
                   DBM.message("用户状态已开通");               }
               else
               {
                   dg_UpdateCommand(source, e);
                   DataBindDg();
                   DBM.message("用户状态已冻结");
               }
           }
经过测试用户状态只能实现用户状态开通,不能实现用户状态冻结,后来根据net生命周期原理,这个dg_UpdateCommand()中的按钮应该放在预编译中解决,就是  dg_PreRender(object sender, EventArgs e)可是在这个事件中:要用for()来取得datagrid中的各个单元行吧。3.
问题说明:           protected void dg_PreRender(object sender, EventArgs e)
           {
                User user = new User();
                for (int i = 0; i < dg.Controls.Count; i++)
                {
==========================================================================                    Button contr = (Button)dg.FindControl("Button1"); 此句有问题按钮这个值取不到,这个时候怎办呀。谢谢
==========================================================================
                    if (user.UserState == "0")
                    {
                        contr.Text = "冻结";
                    }
                    else
                    {
                        contr.Text = "开通";
                    }                }           }