datagrid中数据自动填充,然后增加一个用于删除的链接列,可总是加在左边,如何调整到最右边?code: DB.StartConn() ;
DB.fillGridFromTblName("tblClass" ,this.DataGrid1) ; Response.Write(DataGrid1.Columns.Count) ;
 System.Web.UI.WebControls.HyperLinkColumn lc1 = new HyperLinkColumn() ;
lc1.HeaderText = "删除" ;
lc1.Text = "删除" ;
lc1.DataNavigateUrlField="class_code" ;
//lc1.DataTextField = "class_code";
lc1.NavigateUrl = "ClassAccess3_WebForm?class_code=" ;
lc1.DataNavigateUrlFormatString = "ClassAccess3_WebForm.aspx?class_code={0}" ;

//
DataGrid1.Columns.Add(lc1) ;
this.DataGrid1.DataBind() ;

解决方案 »

  1.   

    DataGrid1.Columns.Add(lc1) ;
    =>DataGrid1.Columns.AddAt(DataGrid1.Columns.Count,NewColumn);
      

  2.   

    晕,应该是DataGrid1.Columns.AddAt(DataGrid1.Columns.Count,lc1);
      

  3.   

    to hedonister(冰戈) ( ):还是在左边!是还需要设置其他属性值吗?我当前的autogeneratorcolumns 为true
      

  4.   

    这个主要是得通过前台HTML来改写的,如果你数据库本来就有列,那就把autogeneratorcolumns 设为false.
    比如:<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"  Width="632px"  >
                <Columns>   
                <asp:BoundField DataField="sid" HeaderText="ID" />
                <asp:BoundField DataField="title" HeaderText="标题">
                    <HeaderStyle Width="120px" />
                </asp:BoundField>          
                <asp:BoundField  DataField="text" HeaderText="内容">
                    <HeaderStyle Width="350px" />
                </asp:BoundField>
                <asp:BoundField DataField="time" HeaderText="发表时间">
                    <HeaderStyle Width="50px" />
                </asp:BoundField>
                <asp:TemplateField>
                <ItemTemplate>
                <asp:LinkButton  CommandName="delete" Text="删除" ID="LinkButton3" runat="server"></asp:LinkButton>
                </ItemTemplate>
                </asp:TemplateField>
                </Columns>          
            </asp:GridView>
      

  5.   

    to clmilan(咔咔) :我就是不想绑定列,内容太多。就用fill方法自动填充得到表中的各列,然后再添加删除的链接列
    自动填充代码:
    public static void fillGridFromTblName(String str_TblName , DataGrid dg)
    {
    SqlDataAdapter sda = new SqlDataAdapter("select * from " + str_TblName , DB.GetConn() ) ;
    DataSet ds = new DataSet() ;
    sda.Fill(ds , str_TblName) ;
    dg.DataSource = ds ;
    dg.DataMember = str_TblName ;
    }
      

  6.   

    已经搞定,各位看看有没问题?
    public void RefreshGrid()
    {
    DataGrid1.AutoGenerateColumns = false ;
    DB.StartConn() ;
    DB.fillGridFromTblName("tblClass" ,this.DataGrid1) ; Response.Write(DataGrid1.Columns.Count) ; BoundColumn bc ;
    for(int i = 0 ;i< ((DataSet)DataGrid1.DataSource).Tables[0].Columns.Count ;i++)
    {
     bc = new BoundColumn() ;
    bc.HeaderText = ((DataSet)DataGrid1.DataSource).Tables[0].Columns[i].ColumnName ;
    bc.DataField = ((DataSet)DataGrid1.DataSource).Tables[0].Columns[i].ColumnName ;
    //tc.ItemTemplate = n
    DataGrid1.Columns.Add(bc) ;

    }


    BoundColumn bc3 = new BoundColumn() ;
    bc3.HeaderText= "删除" ;
    bc3.DataField = "class_code" ;
    bc3.DataFormatString = "<a href='ClassAccess3_WebForm.aspx?class_code={0}'>删除</a>" ;
    DataGrid1.Columns.AddAt(DataGrid1.Columns.Count,bc3) ;
    this.DataGrid1.DataBind() ;

    }
      

  7.   

    public void DataGrid1_ItemDataBound(object sender,DataGridItemEventArgs e)
    {
    if(e.Item.ItemType!=ListItemType.Header)
    {
    TableCell lc1 = new TableCell();
    lc1.Text = "<a href='ClassAccess3_WebForm.aspx?class_code="+e.Item.Cells[0].Text+"'>删除</a>";//如果class_code在第一列

    e.Item.Cells.Add(lc1);
    }
    else
    {
    TableCell lc1=new TableCell();
    lc1.Text="删除";
    e.Item.Cells.Add(lc1);
    }
    }