1

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(); 
4

0 に答える 0