将Datagridview的templatefield值读取为字符串

时间:2013-11-16 09:57:05

标签: c# asp.net datagridview

我有一个datagridview,其中我在模板字段中有一个文本框,就像

<asp:TemplateField>
     <HeaderTemplate>Close</HeaderTemplate>
         <ItemTemplate>
            <asp:TextBox ID="txtClose" runat="server" Width="90px" Text='<%# Eval("Open") %>'></asp:TextBox>
         </ItemTemplate>
           <ItemStyle Width="120px" HorizontalAlign="Center" VerticalAlign="Middle" />
           </asp:TemplateField>

当我尝试使用

将整个网格值转换为字符串时
for (int i = 0; i < dgv.Rows.Count; i++)
        {
            for (int j = 0; j < dgv.Rows[i].Cells.Count; j++)
            {
                str = str + "," + Convert.ToString(dgv.Rows[i].Cells[j].Text);
            }
            str = str + "|";
        }

模板字段值将显示为空字符串

任何想法如何检索它们?

1 个答案:

答案 0 :(得分:1)

你在单元格中有asp.net服务器控件,你必须先找到它们才能获得它们的值。您可以使用Control.FindControl来呼叫RowCell对象,以获取其中的textBox

for (int i = 0; i < dgv.Rows.Count; i++)
{
     TextBox txtClose = (TextBox)dgv.Rows[i].FindControl("txtClose");
     str = str + "," + Convert.ToString(txtClose.Text);
     //Find and add more template fields here.  
     str = str + "|";
}