1.
  如果说其他的Command事件都统一到ItemCommand到好理解,不过年PageIndexChanged事件都跑到里面去了,那就没碰到过了。
2.
  上面的添加列的代码应该放在Page_Load等每次刷新都会执行到的代码里。
3.
  基本没什么区别。不过能在代码里设置的,还是在代码里做吧。

解决方案 »

  1.   

    你的DataGrid上面的OnsortCommand,OnDeleteCommand等都是你自己加上去的吗?
    我的是这样的
    <asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 49px; POSITION: absolute; TOP: 69px" runat="server" Width="562px" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" BackColor="White" CellPadding="3" GridLines="Vertical" ForeColor="Black" PageSize="20" AllowPaging="True">
    <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
    <AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
    <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>
    <FooterStyle BackColor="#CCCCCC"></FooterStyle>
    <Columns>
    <asp:EditCommandColumn ButtonType="PushButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
    <asp:ButtonColumn Text="删除" ButtonType="PushButton" CommandName="Delete"></asp:ButtonColumn>
    </Columns>
    <PagerStyle HorizontalAlign="Left" ForeColor="Black" Position="TopAndBottom" BackColor="#999999" Mode="NumericPages"></PagerStyle>
    </asp:DataGrid>
      

  2.   

    if (分页)
    {
        // 这儿不知如何处理在Item事件中
    Response.Write(e.CommandName);然后,看分页时出什么大概是"Page"吧
      

  3.   

    谢谢 jackyhx
    我实在找不出怎么回事,看来只有重写个页面试试。ButtonColumn是不是就无法动态加入了??
    本意是这样的:
    我的某些表中可能有一个/多个列为二进制数据(如OFFICE)文档,我想如果该表中有这种列,那么生成一个ButtonColumn,用户点击后进行处理(如浏览或下载等)
      

  4.   

    to  icyer()
    感谢斑竹光临
    你说的2.
      上面的添加列的代码应该放在Page_Load等每次刷新都会执行到的代码里。就是说可以动态new ButtonColumn了?
      

  5.   

    是的。
    不仅是ButtonColumn,就是模板列,都能动态添加。
      

  6.   

    再说明一下:
    不论我的事件响应是在aspx还是在代码里,都是那样。既然别人都可以,我再找找把。我也觉得奇怪,可就是碰到了TO yxrj() :
        那个我知道
      

  7.   

    动态new ButtonColumn
    可以参考这个
    http://www.csdn.net/expert/topic/659/659866.xml?temp=.7722742
      

  8.   

    好了,那我试试
    a while
      

  9.   

    ButtonColumn动态添加是可以的,我原来也碰到这个问题
    你可以把ButtonColumn定义到所有函数外面
    然后在Page_Load的时候设定一个参数来看是否要
    添加动态的ButtonColumn,然后再帮定事件就可以了
    以下是我的代码你可以参考一下,
    this.GenerateNewRow();是动态生成一条新纪录的编写窗体。if(!Page.IsPostBack)
    {
    Cache["RowAdding"]=false;
    } if((bool)Cache["RowAdding"]==true)
    {
    this.GenerateNewRow(); 
    }
    InitializeDynamicControls();private void InitializeDynamicControls()
    {
    this.myButton_0.Click +=new System.EventHandler(this.InsertCommand);  
    this.myButton_1.Click +=new System.EventHandler(this.CancelInsertCommand); 
    this.myButton_1.Attributes["onClick"]="javascript:return window.confirm('确认要删除这条记录吗?');";
    //Add Control Buttons

    }