如何使用c#asp.net更改gridview方向?

时间:2019-02-09 18:05:03

标签: c# asp.net webforms

我想知道有什么方法可以将GridView从水平布局更改为垂直布局吗?

请帮助我解决此问题。无论如何,我可以通过CSS或通过C#代码获得所需的输出(如图所示)。 GridView中的所有数据都是动态的。我比较新鲜,请帮帮我。

enter image description here

这是我的代码:

ASPX代码

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
  <Columns>
    <asp:TemplateField HeaderText="ID">
      <ItemTemplate>
        <asp:Label
          ID="lblID"
          runat="server"
          Text='<%# 
    Eval("ID") %>'
        ></asp:Label>
      </ItemTemplate>

      <ItemStyle />
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Date">
      <ItemTemplate>
        <asp:Label
          ID="lblDate_From"
          runat="server"
          Text='<%# 
       Eval("Date_From") %>'
        ></asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:TextBox
          ID="txtDate_From"
          runat="server"
          Text='<%# 
      Eval("Date_From") %>'
          Width="140"
        ></asp:TextBox>
      </EditItemTemplate>
      <ItemStyle />
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Name">
      <ItemTemplate>
        <asp:Label
          ID="lblEmp_Name"
          runat="server"
          Text='<%# 
      Eval("EmpName") %>'
        ></asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:TextBox
          ID="txtEmpName"
          runat="server"
          Text='<%# Eval("EmpName") %>'
          Width="140"
        ></asp:TextBox>
      </EditItemTemplate>
      <ItemStyle />
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Employee_Designation">
      <ItemTemplate>
        <asp:Label
          ID="lblEmpDesig"
          runat="server"
          Text='<%# Eval("EmpDesig") %>'
        ></asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:TextBox
          ID="txtEmpDesig"
          runat="server"
          Text='<%# Eval("EmpDesig") %>'
          Width="140"
        ></asp:TextBox>
      </EditItemTemplate>
      <ItemStyle />
    </asp:TemplateField>
  </Columns>
</asp:GridView>

C#背后的代码

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        this.BindGrid();
    }
}

private void BindGrid()
{
    try
    {
        objlog.Action = "FetchEmp_Details";
        objlog.StrName = "Stored_Proc_Emp";
        dt = IncometaxDetails_Datalayer.GetData(objlog);
        if (dt.Rows.Count > 0)
        {
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
    }
    catch (Exception ex)
    {

    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用以下功能垂直转换数据并将其绑定到GridView

public DataSet FlipDataSet(DataSet my_DataSet)
{
    DataSet ds = new DataSet();
    foreach (DataTable dt in my_DataSet.Tables)
    {
        DataTable table = new DataTable();
        for (int i = 0; i <= dt.Rows.Count; i++)
        {
            table.Columns.Add(Convert.ToString(i));
        }
        DataRow r = null;
        for (int k = 0; k < dt.Columns.Count; k++)
        {
            r = table.NewRow();
            r[0] = dt.Columns[k].ToString();
            for (int j = 1; j <= dt.Rows.Count; j++)
            r[j] = dt.Rows[j - 1][k];
            table.Rows.Add(r);
        }
        ds.Tables.Add(table);
    }

    return ds;
}

在将数据绑定到GridView的地方,必须将DataSet传递给您可以执行的功能:

DataSet ds = new DataSet();

if (dt.Rows.Count > 0)
{
    GridView1.DataSource = FlipDataSet(ds.Tables.Add(dt));
    GridView1.DataBind();
}

有关更多信息,您可以查看这篇文章Displaying vertical rows in a GridView