Zuerst von Ich weiß nicht, ob das möglich ist, der richtige Weg zu gehen oder sogar funktioniert, aber ich hoffe, Sie können mir helfen, ich werde versuchen zu erklären:Wie mehrere Spaltenwerte in eine Spalte zusammenführen? Asp.net Gridview C#
I habe ein Gridview-Steuerelement auf der ASPX-Seite:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True" OnRowDataBound="GridView1_RowDataBound" GridLines="None" CssClass="table table-striped" />
ich eine Datatable in dem Code-Behind erstellt, die die folgenden Daten und haben binden sie an den Gridview-Steuerelement hält: ich würde jetzt
-----------------------------------------
| | Name1 | Name2 | Name3 | Name4 |
-----------------------------------------
| Row1 | 1 | 1 | 1 | 1b |
| Row2 | 1a | 2b | 2b | 4b |
| Row3 | 2a | 2c | 2a | 2a |
| Row4 | 1d | 1d | 1d | 4d |
| Row5 | 1e | 1e | 1e | 1e |
| Row6 | 1f | 2f | 3f | 4f |
-----------------------------------------
mag Übereinstimmende Spaltenwerte, die zusammengeführt werden sollen, und fügen Sie die entsprechenden Werte hinzu iate colspan. Ich habe hinzugefügt, um die Gridview eine OnRowDataBound wie folgt steuern:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowIndex >= 0)
{
int colSpanValue = 2;
for (int i = 0; i < e.Row.Cells.Count; i++)
{
if (i+1 < e.Row.Cells.Count)
{
if (e.Row.Cells[i].Text == e.Row.Cells[i + 1].Text)
{
e.Row.Cells[i].BackColor = Color.Beige;
e.Row.Cells[i].ColumnSpan = colSpanValue;
e.Row.Cells[i].HorizontalAlign = HorizontalAlign.Center;
e.Row.Cells[i + 1].Visible = false;
colSpanValue++;
}
}
}
}
}
}
so die obigen Daten diesem Thema erhalten möchten, so etwas wie dieses.
-----------------------------------------
| | Name1 | Name2 | Name3 | Name4 |
-----------------------------------------
| Row1 | 1 | 1b | <!-- problem
| Row2 | 1a | 2b | 4b |
| Row3 | 2a | 2c | 2a | <!-- problem
| Row4 | 1d | 4d |
| Row5 | 1e |
| Row6 | 1f | 2f | 3f | 4f |
-----------------------------------------
Zur Zeit habe ich es geschafft, dies zu erhalten, siehe Screenshot
jedoch nicht wirklich, was ich, um zu sehen, möchte aber erwarten würde, wenn der Block OnRowDataBound Code wahrscheinlich nicht das Recht erfolgt.
Also meine Frage ist:
- Wie kann ich alle gleich Spalten in einer Zeile und fügen Sie colspan sie fusionieren?
- Jetzt für das knifflige Bit, wäre ich in der Lage, die Spalten so zu sortieren, dass passende Spaltenzellen richtig angezeigt werden? (Nicht sicher über diese)
Also das ideale Ergebnis so sein würde:
-----------------------------------------
| | Name1 | Name2 | Name3 | Name4 |
-----------------------------------------
| Row1 | 1 | 1b | <!-- problem
| Row2 | 1a | 2b | 4b |
| Row3 | 2a | 2c | 2a | <!-- problem
| Row4 | 1d | 4d |
| Row5 | 1e |
| Row6 | 1f | 2f | 3f | 4f |
-----------------------------------------
AKTUELLES
Nach der Aktualisierung des Codes gemäß der bereitgestellten Antworten von ConnorsFan und fnostro, beide Antworten sind korrekt und funktionieren, danke für die Hilfe. Ich wähle für ConnorsFan Ansatz, wie ich noch lerne.
Die collspan ist jetzt richtig sind, siehe Bild unten:
ich des fnostro beraten werden versuchen, den Sortierteil über die Datatable und erneut binden die Daten an die GridView1 zu verwalten und halten Sie auf dem Laufenden . Nochmals vielen Dank für Ihre Antworten.
Vielen Dank, das funktioniert großartig, ich habe hinzugefügt, aktualisiert Informationen einschließlich eines Screenshots mit dem Ergebnis Ihrer Antwort. – user6450463
Gern geschehen! – ConnorsFan