数据网格模板列提交到.CSV

时间:2011-03-10 09:33:32

标签: c# asp.net gridview

我有一个使用下面的代码导出到.csv的GridView。问题是我有一个带有TextBox的TemplateColumn,它根本没有写入.CSV!

任何人都可以帮我吗?它让我疯了!

这里的任何帮助都会很棒!

<asp:GridView ID="GridView1" runat="server" DataSourceID="as400" 
AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" 
GridLines="None">
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<Columns>
 <asp:BoundField DataField="IMSKU" HeaderText="SKU"  />
 <asp:BoundField DataField="IMDESC" HeaderText="Description"  />
 <asp:BoundField DataField="JFFXQT" HeaderText="Required" 
    ItemStyle-HorizontalAlign="Center" >
<ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:BoundField>
    <asp:TemplateField HeaderText="Qty"> 
    <ItemTemplate>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    </ItemTemplate>
    </asp:TemplateField>

</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>

protected void Button1_Click(object sender, EventArgs e)
{

    //Get Username
string[] username = Request.ServerVariables["LOGON_USER"].ToString().Split('\\');
    globalfunctions getAttribute = new globalfunctions();

    string storeEmail = getAttribute.getADattribute(username[1], "mail");

    //append to csv file
    StreamWriter sw = File.AppendText("e:\\results\\decdiylayout.csv");

    //seperate datagrid to comma seperated values
     for (int i = 0; i < GridView1.Rows.Count; i++)
{
    string strRowVal = "";
    for (int j = 0; j < GridView1.Rows[i].Cells.Count; j++)
    {
    if (strRowVal == "")
    {
        strRowVal = DateTime.Now + "," + username[1].Remove(3)+ "," + Layout.Text + "," + GridView1.Rows[i].Cells[j].Text;
    }
    else
    {
        strRowVal =  strRowVal + "," + GridView1.Rows[i].Cells[j].Text;
    }
    }
    sw.WriteLine(strRowVal);
}
sw.Close(); 

2 个答案:

答案 0 :(得分:1)

这有效:

         //append to csv file
         StreamWriter sw = File.AppendText("e:\\results\\decdiylayout.csv");

         //seperate datagrid to comma seperated values
         for (int i = 0; i < GridView1.Rows.Count; i++)
         {
            string strRowVal = "";
            for (int j = 0; j < GridView1.Rows[i].Cells.Count; j++)
            {

                GridViewRow row = GridView1.Rows[i];

                TextBox Qty = (TextBox)row.FindControl("TextBox2");
                String Quant = Qty.Text;


                if (strRowVal == "")
                {
                    strRowVal = DateTime.Now + "," + username[1].Remove(3)+ "," + Layout.Text + "," + Quant + "," + GridView1.Rows[i].Cells[j].Text;
                }
                else
                {
                    strRowVal =  strRowVal + "," + GridView1.Rows[i].Cells[j].Text;
                }
            }
            sw.WriteLine(strRowVal);
        }
        sw.Close(); 

答案 1 :(得分:0)

您需要获取文本框控件并获取其值。

像...一样的东西。

         TextBox txt = GridView1.Rows[i].Cells[j].FindControl("textboxid");