c# - 如何在 GridView 中拥有具有相同字段但不同值的两列

标签 c# mysql asp.net sql-server gridview

我目前正在 ASP.NET/C# 中做一个项目,我有一个 GridView,它从两个不同的表中获取两种类型的数据,ID 和 Initials。

表格本身必须是这样的:


单元 1

ID - 首字母


旁边还有一列:


单元 2

ID - 首字母


ID 是从表 2 中调用的,而首字母是从表 1 中调用的。每个 ID 都有自己的首字母,但我的问题是,由于首字母被调用了两次,它们在下面和以前的专栏,如图所示 here .

我当前的代码(ASPX):

<asp:GridView ID="GridView1" runat="server" CssClass= "table table-hover table-bordered" AllowPaging="false" PageSize="4" OnPageIndexChanging="OnPaging" OnPageIndexChanged="SearchByTagButton_Click" Style="max-width:75%;" AutoGenerateColumns="false">
                <Columns>
                    <asp:TemplateField HeaderText="UNIDADE" HeaderStyle-ForeColor="#B70700" HeaderStyle-Width="34%">
                        <ItemTemplate>
                            <%# DataBinder.Eval(Container.DataItem, "unidade")%>
                            -
                            <%# DataBinder.Eval(Container.DataItem, "sigUnidade")%>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="UNIDADE APOIADA" HeaderStyle-ForeColor="#B70700" HeaderStyle-Width="34%">
                        <ItemTemplate>
                            <%# DataBinder.Eval(Container.DataItem, "unidadeApoiada")%>
                            -
                            <%# DataBinder.Eval(Container.DataItem, "sigUnidade")%>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>

和 C#:

SqlDataAdapter da;
    DataSet ds1 = new DataSet();
    DataSet ds2 = new DataSet();    
SqlConnection conn = new SqlConnection(strConn);

    da = new SqlDataAdapter("SELECT ts.unidade, u.sigUnidade FROM T_SECRETARIAS ts INNER JOIN UNIDADES u on u.unidade = ts.unidade WHERE '%" + txtCodigoSearch.Text + "%' IS NULL OR LEN('%" + txtCodigoSearch.Text + "%') = 0 OR (ts.unidade='%" + txtCodigoSearch.Text + "%') OR ts.unidade LIKE '%" + txtCodigoSearch.Text + "%'", conn);
    da.Fill(ds1);
    da = new SqlDataAdapter("SELECT ts.unidadeApoiada, u.sigUnidade FROM T_SECRETARIAS ts INNER JOIN UNIDADES u on u.unidade = ts.unidadeApoiada WHERE '%" + txtCodigoSearch.Text + "%' IS NULL OR LEN('%" + txtCodigoSearch.Text + "%') = 0 OR (ts.unidadeApoiada='%" + txtCodigoSearch.Text + "%') OR ts.unidadeApoiada LIKE '%" + txtCodigoSearch.Text + "%'", conn);
    da.Fill(ds2);
    ds1.Merge(ds2);
    GridView1.DataSource = ds1;
    GridView1.DataBind();

我基本上加入了两个数据集,一个用于每个 SQL 查询,因为我发现这是加入两个查询以获取两个 ID 的唯一方法(它们是不同的,因为它们都是表 1 中的“主 ID” , 但在表 2 中,它们也可以是“子 ID”。

我已尽力解释,但希望我的表格格式为 ID - INITIALS 而没有任何重复。如果我能得到任何帮助,我将不胜感激。

最佳答案

从注释开始,可以有如下代码:

SqlDataAdapter da;
DataSet ds1 = new DataSet(); 
SqlConnection conn = new SqlConnection(strConn);

da = new SqlDataAdapter("SELECT ts.unidade, ts.unidadeApoiada, u1.sigUnidade as sigUnidade1, u2.sigUnidade as sigUnidade2 FROM T_SECRETARIAS ts INNER JOIN UNIDADES u1 on u1.unidade = ts.unidade INNER JOIN UNIDADES u2 on u2.unidade = ts.unidadeApoiada WHERE....", conn);
da.Fill(ds1);
GridView1.DataSource = ds1;
GridView1.DataBind();

在 aspx 中:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField HeaderText="UNIDADE">
                    <ItemTemplate>
                        <%# DataBinder.Eval(Container.DataItem, "unidade")%>
                        -
                        <%# DataBinder.Eval(Container.DataItem, "sigUnidade1")%>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="UNIDADE APOIADA">
                    <ItemTemplate>
                        <%# DataBinder.Eval(Container.DataItem, "unidadeApoiada")%>
                        -
                        <%# DataBinder.Eval(Container.DataItem, "sigUnidade2")%>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>

关于c# - 如何在 GridView 中拥有具有相同字段但不同值的两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43227776/

相关文章:

mysql - 统计每个月的记录,包括结果为零的记录

c# - 获取 gridview 的页脚行单元格值

c# - 将 CSS 链接到 asp.net 中的 SKIN 文件

c# - MVC2 c# 表格中的多种形式。一种表单在回发时覆盖其他表单元素

c# - 如何使用 NUnit 3 (C#) 从代码运行特定的 NUnit 测试

mysql - SQL查询报告编写

c# - 在 IE8 中,chrome 下拉列表的宽度与下拉框的宽度相同,而在 IE9 中,下拉列表的宽度不同。如何修复?

c# - 如何在自适应对话框 HttpRequest 中从 xml 转换为 json?

c# - 直观地提取html元素

PHP 和 SQL - 如何选择当年所有月份的最高总和?