我的gridview是动态绑定数据,如何将删除编辑列放到最后一列。用代码如何写,如果在页面设计阶段做,如何做?

解决方案 »

  1.   

    不用gridview自己带的编辑删除功能,自己添加模板列做·
      

  2.   

    使用ITemplate

    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick="return confirm('确认要删除吗?');" 
      Text="删除"> </asp:LinkButton> 
    </ItemTemplate> 
      

  3.   

    前台的话应该是:<asp:CommandField ShowDeleteButton="True" HeaderText="删除" ></asp:CommandField>   //放在最后面就行了</Columns>后台的话:
    For i = 0 To gridview1.rows.Count - 1
       gridview1.rows(i).Cells(gridview1.Columns.Count - 1).Attributes.Add("onclick", "javascript: this.parentNode.style.backgroundColor='#eeeeee'; if (confirm('Are you sure to delete this record?')){return;}else{this.parentNode.style.backgroundColor='Ivory';return false;};")
                Next
    代码可以放在 gridview1.databind()之后没有测试过啊,我在用DATAGRID....
      

  4.   

    我的GridView要显示不同表的数据,各个表的列定义不同,所以不能在设计阶段确定GridView的BoundField,需要在服务器端确定根据传入表来确定GridView中显示的字段。这样就有两个问题:1.如果我在页面设计阶段在GridView中增加了“编辑”、“删除”按钮后,“编辑” “删除”两个按钮总是显示在GridView的最前面,而不是显示在数据的后面(即“编辑”、“删除”总是在GridView的第1、第2列,而不是在 GridView的最后列),如何将“编辑”、“删除”显示在GridView显示数据的后面呢?2.如果在页面设计阶段,GridView中不增加“编辑”、“删除”按钮,而是在服务器端使用代码增加“编辑”、“删除”按钮,代码如何写呢?“编辑”、“删除”操作的代码又是怎样呢?
    谢谢大家的回答
      

  5.   

         if (!IsPostBack)        {            TemplateField tField;             // Create the dynamic templates            tField = new TemplateField();            tField.ItemTemplate = new GridViewTextTemplate(DataControlRowType.DataRow, "parameter_description", "textParameterDesc");            tField.HeaderTemplate = new GridViewTextTemplate(DataControlRowType.Header, "说明", "textParameterDescHd");             // Add the dynamic templates field column to the GridView            GridView1.Columns.Add(tField);        }
      

  6.   

    用COMMANDFIELD替换Templatefield就可以了
    位置的话最后的.ADD方法里有定位?
      

  7.   

    http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.commandfield.commandfield(VS.80).aspx
    不给我分我就要哭啦
      

  8.   

    分是肯定给。不好意思,还想再问一下,在http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.commandfield.commandfield(VS.80).aspx示例中,增加了一个CommandField。我想对CommandField有如下两类操作,怎么做?1.当点击CommandField时,根据所在行的序号打开一个新的页面,并且父页面不发生刷新,怎么写?2.当点击CommandField时,想在服务器端写代码进行数据库操作,应该怎么设置?我刚学C#编程不久。谢谢
      

  9.   

    1.点击CoMMANDFIELD会有一个对应的EDITIDNEX或是删除什么的INDEX,如果你有分页的话用 pageindex*pagesize+Editindex/删除INDEX,可以定位到行了
    父页面不刷新  额貌似我还没看到AJAX 哈哈我也是菜菜鸟。。你找AJAX的看看
    不过这个COMMANDFIELD的效果和前台一样的啊,点击这个会自动的把这一行的换成EDITITEM下的东西显示出来,应该可以满足你的效果2.在服务器进行数据库操作,那是必须的啦。。在由于你按钮设置的是类型不一样,可能是EDIT可能是DELETE,会有相应的点击触发事件,在里面写就行了,,相应的话刚不是定位行了么,再加一CELL[I],就定位到某个单元格数据了事件关联你不会的写的话,在前台拖个EDIT 按钮,然后查看到GRIDVIEW的属性,左键双击相应事件会有代码你参考完
      

  10.   

    谢谢!我当数据绑定到GridView中后,再向GridView中增加一列,就不能增加了。如果要向GridView中增加一列,只能在数据绑定到GridView之前才行(这是我用程序测试的结果,不知道对不对)。如果在Web页面设计阶段就将“编辑”、“删除”增加到GridView中,当绑定数据后,“编辑”、“删除”都是在表格的第1、第2行,这样很不好。当GridView绑定数据后,如何将“编辑”、“删除”移到表格的最后,这就是我的问题?
    现在我如果用代码在服务器端向GridView中增加HyperLinkField,HyperLinkField也是能在数据绑定之前才有用(但此时HyperLinkField还是在表的第1行),在数据绑定之后,如果再向表中增加HyperLinkField,就不能增加了。
    这个问题已经弄了我好长时间都不能解决,希望大家帮忙。
      

  11.   

    所谓的绑定后不能增加是需要重要绑定一次的
    所谓的不在最后神奇。
        if (!IsPostBack) 
    {
     gridview1.datasource=ds;
     gridview1.columns.insert(locate,COMMANDFIELD);
      gridview1.bind();
    }
              
    这里的locate你应该是由你的SQL或者说DS(ds.rows.count-1)加上你的是否要填的东西,联合起来决定