我有一个使用下面的代码导出到.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();
答案 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");