如何使用Asp.Net C#更改GridView中列的顺序

4

我有一个网格,在代码后台中绑定,我想在其中显示模板字段。

我为网格视图生成了3列的DataTable,模板字段是TextBox控件。

我的数据绑定代码如下...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;


public partial class gr4 : System.Web.UI.Page
{
    SqlConnection cn;
    SqlCommand cmd;
    SqlDataAdapter da;
    DataSet ds;

protected void Page_Load(object sender, EventArgs e)
{
    cn = new SqlConnection("Data Source=AMIR-PC\\MOHEMMAD;Initial Catalog=CRM_InvestPlus;Integrated Security=True");
    string query = "Select Capacity from Dealer_License_Capacity where ID='D00001' and Software_ID='001' and Version_ID='1'";
    cn.Open();
    cmd = new SqlCommand(query,cn);
    da = new SqlDataAdapter(cmd);
    ds = new DataSet();
    da.Fill(ds);
    cn.Close();

    DataTable dt = new DataTable();
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Software_Name", typeof(string));
    dt.Columns.Add("Version_Name", typeof(string));

    int count = Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());

    for (int i = 0; i < count; i++)
    {
        DataRow dr = dt.NewRow();
        dr["Name"] = "aaa";
        dr["Software_Name"] = "bbb";
        dr["Version_Name"] = "ccc";

        dt.Rows.Add(dr);
    }

    GridView1.DataSource = dt;
    GridView1.DataBind();
   }
}

我用于网格视图的源代码如下:

    <asp:GridView ID="GridView1" runat="server">
    <Columns>

        <asp:TemplateField>
            <ItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>

    </Columns>
    </asp:GridView>

</div>
</form>

网格显示模板字段作为第一列,但我希望在输出中将模板字段显示为最后一列。我能否在此网格中添加更多的模板字段?请帮忙解决,谢谢。

根据容量,应生成网格视图中的行。这就是为什么使用计数变量.. :-) @cha - Mohemmad K
我只关心GridView的显示顺序.. :-) - Mohemmad K
1
为什么不将绑定字段与自动生成列设置为false? - शेखर
如何做到这一点...??我不知道 @krshekhar - Mohemmad K
@RiyazKalva 我已经添加了答案。 - शेखर
@RiyazKalva 欢迎您随时光临。 - शेखर
2个回答

3
您可以像下面这样使用绑定字段。
  <asp:GridView ID="GridView1" runat="server"  AutoGenerateColumns="false" > /*changed to false*/
     <Columns>
       <asp:BoundField HeaderText="Name" 
           DataField="Name"/>
       <asp:BoundField HeaderText="SoftwareName" 
           DataField="Software_Name"/>
       <asp:BoundField HeaderText="VersionName" 
           DataField="Version_Name"/>

       <asp:TemplateField>
           <ItemTemplate>
               <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
           </ItemTemplate>
       </asp:TemplateField>
    </Columns>
</asp:GridView>

你可以根据自己的喜好更改顺序。

-2

如果数据库中已经有了所有数据,并且在网格视图中列名为“name”的列与此相同,则必须显示名称为“order”的名称,但我不知道该如何做。

这是我的网格代码,但无法按顺序显示。


1
你的回答真的不太容易理解。我甚至不确定它是否在尝试回答这个问题。请尝试提供一些代码。 - Peopleware

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接