DavidBMedlem sedan jan. 20001 372 inlägg Hej
Jag har en GridView där jag visar lite Data, GridViewen har en Header-rad och en Footer-rad, det jag nu vill göra är att lägga till ytterligare en Header-rad, ovanför den befintliga, går detta att göra?
Nu ser koden som genereras ut såhär:
<thead>
<tr class="Header">
<th scope="col">bla</th>
<th scope="col">blabla</th>
<th scope="col">asdas</th>
<th scope="col">asd</th>
<th scope="col">asdasd</th>
</tr>
</thead>
<tfoot>
<tr class="Footer">
<td colspan="5">blabla</td>
</tr>
</tfoot>
<tbody>
Massa rader...
</tbody>
Men jag vill lägga till en extra HeaderRow så att det blir något liknande detta:
<thead>
[b]<tr class="Header">
<th scope="col" colspan="5">En till HeaderRow</th>
</tr>[/b]
<tr class="Header">
<th scope="col">bla</th>
<th scope="col">blabla</th>
<th scope="col">asdas</th>
<th scope="col">asd</th>
<th scope="col">asdasd</th>
</tr>
</thead>
<tfoot>
<tr class="Footer">
<td colspan="5">blabla</td>
</tr>
</tfoot>
<tbody>
Massa rader...
</tbody>
emissionMedlem sedan dec. 19996 721 inlägg Det kan man göra, t.ex. genom att skapa en egen klass som ärver GridView och lägger till extra info i Render.
http://www.asp.net/learn/dataaccess/tutorial27vb.aspx?tabid=63
DavidBMedlem sedan jan. 20001 372 inlägg OKej, läste lite och kom fram till att det borde fungera att köra en override på Render, jag har gjort följande kod med det vill ändå inte fungera.
Raden läggs till i GridView:en och allting, det vill dock inte renderas med den nya raden utan det är som det var innan.
protected override void Render(HtmlTextWriter writer)
{
Table gridTable = ((Table)Posts.Controls[0]);
TableCell header = new TableCell();
header.ColumnSpan = Posts.Columns.Count;
header.Text = "blabla";
GridViewRow headrow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
headrow.Cells.Add(header);
gridTable.Rows.AddAt(0, headrow);
base.Render(writer);
}
DavidBMedlem sedan jan. 20001 372 inlägg Nu har jag försökt ytterligare utan något resultat, testade att lägga in koden ovan i exemplet som man kunde ladda ner från länken i Emission's inlägg, fungerade hur bra som helst.
Räknar man raden m.m i den tabell som skapas så är allt som det skall vara, verkar dock som att när koden skrivs ut så används den ursprungliga koden från GridView:en istället för tabellen där jag har gjort mina modifieringar.
Eftersom det inte är något fel i koden så måste det ju vara nåt annat, finns det någon inställning eller nåt någonstans man kan göra för att den skall köra det riktigt?
protected override void Render(HtmlTextWriter writer)
{
Table gridTable = ((Table)Posts.Controls[0]);
TableCell header = new TableCell();
header.ColumnSpan = Posts.Columns.Count;
header.Text = "blabla";
GridViewRow headrow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
headrow.Cells.Add(header);
gridTable.Rows.AddAt(0, headrow);
base.Render(writer);
}
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Kolumn"));
DataRow dr = dt.NewRow();
dr["Kolumn"] = "Post1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Kolumn"] = "Post1";
dt.Rows.Add(dr);
Posts.DataSource = dt;
Posts.DataBind();
}
DavidBMedlem sedan jan. 20001 372 inlägg Jag har hittat lösningen på problemet.
Har när jag gjort sidan använt mig utav ASP.NET 2.0 CSS Friendly Control Adapters 1.0, denna modifierar säkerligen tabellen en del själv och detta har väl då gjort att man inte kunnat göra några egna modifieringar själv.