日期:2014-05-17  浏览次数:20481 次

后台如何取得GridView中ItemTemplate 中的值
<asp:TemplateField HeaderText="概略经度">
  <ItemTemplate>
  <%# StrDMSToString(Eval("SLongitude").ToString(), 4, true)%>
  </ItemTemplate>
  <EditItemTemplate>
  <asp:TextBox ID="tbSLongitude" runat="server" Width="101px"></asp:TextBox>
  </EditItemTemplate>
  </asp:TemplateField>

当然,我要是偷点懒
直接
<asp:TextBox ID="tbSLongitude" Text='<%# StrDMSToString(Eval("SLongitude").ToString(), 4, true)%>'>
肯定也没问题,但是StrDMSToString是需要计算的,GridView显示出来的时候已经显示了
StrDMSToString计算出来的该单元格要显示的内容,我不想再计算一遍了。

可是后台
protected void gvCtrlPoint_RowEditing(object sender, GridViewEditEventArgs e)
函数里
//概率经度度,GridView [8]
  TextBox _tbSLongitude = (TextBox)(sender as GridView).Rows[e.NewEditIndex].FindControl("tbSLongitude");
  _tbSLongitude.Text = (sender as GridView).Rows[e.NewEditIndex].Cells[8].Text;
这样得到的值总是空,不知道为什么。

------解决方案--------------------
<ItemTemplate>
中使用label,literal中显示数据
findcontrol取值
RowEdit e.row[e.rowindex].cell[1].text
------解决方案--------------------
你显示的值是在ItemTemplate中,而你的GridView在编辑的时候处理的是EditTemplate中的中的内容,两个没有关系啊,所以你是得到的肯定是空值啊。

我建议你还是再计算一下好了