用CHECKBOX选择一行,当在GATAGRID外单击按钮触就触发GATAGRID的编辑事件,对该行进行编辑

解决方案 »

  1.   

    参看:
    http://xml.sz.luohuedu.net/xml/Content.asp
      

  2.   

    <asp:datagrid id="MyDataGrid" AllowPaging="True" PageSize="10" PagerStyle-Mode="NumericPages"
    PagerStyle-HorizontalAlign="Right" OnPageIndexChanged="MyDataGrid_Page" BorderColor="black"
    Borderwidth="1" GridLines="Both" PagerStyle-PageButtonCount="5" DataKeyField="ID" CellPadding="3"
    CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="#eeeeee"
    Width="100%" HorizontalAlign="Center" AutoGenerateColumns="False" AllowSorting="True" Runat="server"
    OnDeleteCommand="myDataGrid_Delete" OnItemCreated="myDataGrid1_ItemCreaed" OnSortCommand="myDataGrid_OnSort"
    OnEditCommand="MyDataGrid_OnEdit" OnUpdateCommand="MyDataGrid_OnUpdate" OnCancelCommand="MyDataGrid_OnCancel">
    <AlternatingItemStyle BackColor="#eeeeee"></AlternatingItemStyle>
    <HeaderStyle BackColor="#aaaadd" Font-Bold="True" HorizontalAlign="center"></HeaderStyle>
    <PagerStyle HorizontalAlign="Center" Mode="NumericPages"></PagerStyle>
    <Columns>
    <asp:EditCommandColumn EditText="编辑" ButtonType="LinkButton" CancelText="取消" UpdateText="修改" />
    <asp:BoundColumn DataField="ID" HeaderText="ID" SortExpression="ID" ReadOnly="True" />
    <asp:BoundColumn DataField="Title" SortExpression="Title" HeaderText="标题" ReadOnly="True"></asp:BoundColumn>
    <asp:BoundColumn DataField="AddTime" HeaderText="时间" ReadOnly="True" DataFormatString="{0:yyyy-mm-dd-hh:mm:ss}"
    SortExpression="AddTime"></asp:BoundColumn>
    <asp:TemplateColumn HeaderText="标题" SortExpression="Title">
    <EditItemTemplate>
    <asp:TextBox ID="EditApproved" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Title")%>' />
    </EditItemTemplate>
    <ItemTemplate>
    <asp:Label Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"Title")%>' id="title" />
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="时间" SortExpression="AddTime">
    <EditItemTemplate>
    <asp:TextBox ID="time" Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"AddTime")%>' />
    </EditItemTemplate>
    <ItemTemplate>
    <asp:Label Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"AddTime","{0:yyyy-MM-dd}")%>' />
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="删除">
    <ItemTemplate>
    <asp:LinkButton ID="LB" CommandName="Delete" Text="删除" Runat="server"></asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:datagrid>
    CS。public void BindData()  //绑定
    {

    MyDataGrid.DataSource=Bindds().Tables["News"].DefaultView;
    MyDataGrid.DataBind();
    Showstats();
    }
    public DataSet Bindds()
    {
    SqlConnection Connection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnStr"]);
    Connection.Open();
    string sql="select * from News";
    SqlDataAdapter sda=new SqlDataAdapter(sql,Connection);
    DataSet ds=new DataSet();
    sda.Fill(ds,"News");

    return ds; }
    public void MyDataGrid_Page(object sender,DataGridPageChangedEventArgs e) //分页
    {
    int startIndex;
    startIndex=MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize;
    MyDataGrid.CurrentPageIndex=e.NewPageIndex;


    BindData();
    Showstats();
    }
    protected void myDataGrid_OnSort(object sender,DataGridSortCommandEventArgs e) //排序
    {
    DataView dv=new DataView(Bindds().Tables["News"]);
                dv.Sort=e.SortExpression.ToString();
    MyDataGrid.DataSource=dv;
    MyDataGrid.DataBind();

    }
    protected void MyDataGrid_OnCancel(object sender,DataGridCommandEventArgs e) //取消
    {
    MyDataGrid.EditItemIndex=-1;
    BindData(); }
    protected void MyDataGrid_OnEdit(object sender,DataGridCommandEventArgs e) //编辑
    {

    MyDataGrid.EditItemIndex=(int)e.Item.ItemIndex;
    BindData(); }

    protected void MyDataGrid_OnUpdate(object sender,DataGridCommandEventArgs e)//修改
    {
    SqlConnection Conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnStr"]);
    Conn.Open();
    int dataid=(int)MyDataGrid.DataKeys[e.Item.ItemIndex];
    string title=((TextBox)e.Item.FindControl("EditApproved")).Text;

    string sqlstring="update News set title='"+title+"' where id="+dataid.ToString();
    SqlCommand Comm=new SqlCommand(sqlstring,Conn);
    Comm.ExecuteNonQuery();
    Comm.Dispose();
    Conn.Close();
    MyDataGrid.EditItemIndex=-1;
    BindData();
    }
    public  void myDataGrid_Delete(object sender,DataGridCommandEventArgs e) //删除
    {
    SqlConnection Connection =new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnStr"]);
    Connection.Open();
        int dataID=(int)MyDataGrid.DataKeys[e.Item.ItemIndex];
    string sqlstr="delete  News where id="+dataID.ToString();
    SqlCommand Comm=new SqlCommand(sqlstr,Connection);
    Comm.ExecuteNonQuery();
    Comm.Dispose();
    Connection.Close();
    BindData(); }
    public void myDataGrid1_ItemCreaed(object sender,DataGridItemEventArgs e) //是否确定删除
    {
    if(e.Item.FindControl("LB")!=null)
    {
    ((LinkButton)(e.Item.FindControl("LB"))).Attributes.Add("onclick","return confirm('Are you sure Delete?');");
    }
    }
      

  3.   

    遍历checkbox,取得选中的行号,DataGrid1.EditItemIndex=行号
      

  4.   

    我用按钮(BUTTON)怎样可以调用DataGrid1的编辑事件