Вид сетки с заголовками строк для разделения групп - PullRequest
0 голосов
/ 30 апреля 2018

Я хочу выяснить, как я могу разделить свои результаты в моем виде сетки, как показано ниже (пожалуйста, запустите сниппет, чтобы увидеть желаемый результат).

Я добавляю gridview, как показано ниже.

<asp:GridView ID="gv" runat="server" CssClass="gvadmin"  PageSize="19" AllowPaging="true" OnPageIndexChanging="gv_PageChanging" AutoGenerateSelectButton="true" AutoGenerateEditButton="true" OnRowEditing="gv_RowEdit" OnSelectedIndexChanged="gv_SelectChanged" />

Заполнение gridview из sql соединения, хранящегося в классе.

gv.DataSource = c.sqldt
gv.DataBind()  

Это заполняет сетку без проблем, но я не знаю, как добавить в подзаголовки для типа. Я видел, как кто-то еще делал это раньше, но я не уверен, как.

<table border="1">
<tr>
<td>ID</td>
<td>type</td>
<td>name</td>
</tr>
<tr>
<td>Person</td>
<td></td>
<td></td>
</tr>
<tr>
<td>1</td>
<td>person</td>
<td>John</td>
</tr>
<tr>
<td>2</td>
<td>person</td>
<td>Amy</td>
</tr>
<tr>
<td>animal</td>
<td></td>
<td></td>
</tr>
<tr>
<td>3</td>
<td>animal</td>
<td>Max</td>
</tr>
<tr>
<td>4</td>
<td>animal</td>
<td>fifi</td>
</tr>
</table>

Мне нужны заголовки для каждого типа по мере его поступления.

Данные будут основываться на sql, поэтому с использованием SQL-запроса у меня нет проблем с получением данных в gridview, но как мне добавить заголовки "type", чтобы разбить их.

Я пробовал следующее, используя несколько таблиц данных в одном наборе данных, но не могу заставить это работать.

        Dim sqlstr As String = "select distinct(type) from typestbl order by type"
    Dim sqlstr2 As String = "select Names,Age from Typestbl order by names where type = @type"


    Dim i As Integer = 0
    s.FillDS(sqlstr)
    For Each row As DataRow In s.sqldt.Rows

        dt = New DataTable
        dt.Columns.Add("Names")
        dt.Columns.Add("Age")
        Dim r As DataRow = dt.NewRow
        r("Names") = row.Item(0).ToString
        r("Age") = ""
        dt.Rows.Add(r)


        ds.Merge(dt)

        s.FillDS2()
        ds.Merge(s.sqldt2)

    Next

    gv.DataSource = ds
    gv.DataBind() 

1 Ответ

0 голосов
/ 01 мая 2018

Пожалуйста, проверьте это.

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
    SqlCommand cmd = new SqlCommand("Select Queueid,queueitem,queuedata,itemgrouptype,itemgroup from queueitems order by itemgrouptype,itemgroup", con);
    DataSet ds = new DataSet();
    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    adp.Fill(ds);
    GridView1.DataSource = ds.Tables[0].DefaultView;
    GridView1.DataBind();
    string first = "";
    for(int i=0;i<ds.Tables[0].Rows.Count;i++)
    {

        if (ds.Tables[0].Rows[i][3].ToString() != first)
        {
            DataRow dr = ds.Tables[0].NewRow();
            dr[0] = ds.Tables[0].Rows[i][3].ToString();
            first = ds.Tables[0].Rows[i][3].ToString();
            ds.Tables[0].Rows.InsertAt(dr, i);

        }

    }
    GridView1.DataSource = ds.Tables[0].DefaultView;
    GridView1.DataBind();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...