Repeater 内に GridView があり、問題なく Excel にエクスポートしています。RowCreated イベントを使用して、DropDown.SelectedValue を使用して GridView のヘッダー内に配置しようとすると、常に SelectedValue ではなく最初の項目が取得されます。誰かがそれを手伝ってくれますか?
2 つのドロップダウン ddlType と ddlYear があり、常に最初の項目の値が返されます。
if (e.Row.RowType == DataControlRowType.Header)
{
if (ddlType.SelectedValue != "0")
contador = int.Parse(ddlType.SelectedValue)-1;
GridViewRow rowHeader = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
string HeaderBackColor = "#EDEDED";
rowHeader.BackColor = System.Drawing.ColorTranslator.FromHtml(HeaderBackColor);
Literal newCells = new Literal();
newCells.Text = ddlYear.SelectedValue+@"</th>" +
"</tr>" +
"<tr bgcolor='" + HeaderBackColor + "'>";
newCells.Text += @"<th colspan='8' style='width:100px' >" + typeA + "</th>" +
"</tr>" +
"<tr bgcolor='" + HeaderBackColor + "'>";
switch (Nav)
{
case "0":
newCells.Text += @"<th colspan='2' style='width:80px' >item1</th>
<th colspan='2' style='width:80px'>item2</th>
<th colspan='2' style='width:80px'>item3</th>
<th colspan='2' style='width:80px'>tem4</th>";
break;
case "1":
newCells.Text += @"<th colspan='2' style='width:80px' >item1</th>";
break;
case "2":
newCells.Text += @"<th colspan='2' style='width:80px'>item2</th>";
break;
case "3":
newCells.Text += @"<th colspan='2' style='width:80px'>item3</th>";
break;
case "4":
newCells.Text += @"<th colspan='2' style='width:80px'>item4</th>";
break;
}
newCells.Text += @"</tr><tr bgcolor='" + HeaderBackColor + "'>";
if(Nav=="0")
newCells.Text += @"<th>N</th>
<th>E</th>
<th>N</th>
<th>E</th>
<th>N</th>
<th>E</th>
<th>N</th>
<th>E";
else
newCells.Text += @"<th>N</th>
<th>E";
TableCellCollection cells = e.Row.Cells;
TableHeaderCell headerCell = new TableHeaderCell();
headerCell.RowSpan = 4;
headerCell.Controls.Add(newCells);
headerCell.BackColor = System.Drawing.ColorTranslator.FromHtml("#6495ED");
headerCell.ForeColor = System.Drawing.ColorTranslator.FromHtml("#FFF");
rowHeader.Cells.Add(headerCell);
rowHeader.Visible = true;
((GridView)sender).Controls[0].Controls.AddAt(0, rowHeader);
}
これを使用してExcelにエクスポートしています:
string attachment = "attachment; filename=Contacts.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
MyRepeater.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();