DataGrid模板列问题

larson001 2003-07-23 07:00:22
DataGrid第一列是科目名称,绑定到数据库,行数动态增加。
第二列格式成TextBox,供输入成绩,个数随第一列而动态增加。其代码如下: <ItemTemplate> <asp:TextBoxRunat="server"ID="txt"></asp:TextBox> </ItemTemplate>
代码中,怎么得到第二列每一行用户输入进TextBox的内容呢?或是上面格式TextBox的模板写得不对,应该怎么改写?
...全文
21 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
larson001 2003-07-23
  • 打赏
  • 举报
回复
对,就是少写了:
if (IsPostBack==false)
{
……
}
太谢谢你了,小弟刚学ASP,真是“听君一席话,胜读十年书呀”。
愿交个朋友的话:QQ:93947150
以后还请多多指教
ruyedian 2003-07-23
  • 打赏
  • 举报
回复
看一下你绑定DATAGRID的语句有没有写在
If Not IsPostBack Then
BindDataGrid()
End If

如果没有写在这里面的话,你每次返回服务器时,会先重新绑定数据集,那么你写在textbox里面的数据也就没有了
ruyedian 2003-07-23
  • 打赏
  • 举报
回复
sub datagrid1_onItemdataBound(sender as object, e as DataGridItemEventArgs)
if e.item.itemindex<>-1 then
ctype(e.item.findcontrol("txtbox"), textbox).Attributes("onchange") = "txtchanged()"
end if
end sub
---------------------
<script language="vbscript">
sub txtchanged()
document.all("label1").innertext = window.event.srcElement.value
end sub
</script>
larson001 2003-07-23
  • 打赏
  • 举报
回复
to ruyedian(710℃ 高烧) :
DataGrid里没有Label呀,不懂你的意思…
ruyedian 2003-07-23
  • 打赏
  • 举报
回复
你的Label的Text要随TextBox时时改变吗?
larson001 2003-07-23
  • 打赏
  • 举报
回复
<asp:datagrid id="DataGrid1" runat="server" Width="100%" EnableViewState =True AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="CourseID" HeaderText="课程ID"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="给分">
<ItemTemplate>
<asp:TextBox Runat="server" ReadOnly =False MaxLength =3 ID="txtBox"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
原代码如上,特意加了EnableViewState="true"也不行,
急,各位帮帮忙呀
ruyedian 2003-07-23
  • 打赏
  • 举报
回复
看一下
你是不是在<asp:Datagrid...里面设定了:
EnableViewState="false"
如果有把EnableViewState="false" 删掉
larson001 2003-07-23
  • 打赏
  • 举报
回复
Label2.Text =((TextBox)DataGrid1.Items[1].FindControl ("txt")).Text ;
我试了好几遍,Label2总显示空,是模板写错了吗??
模板:<asp:TemplateColumn HeaderText="给分">
<ItemTemplate>
<asp:TextBox Runat="server" ID="txt"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
xrll 2003-07-23
  • 打赏
  • 举报
回复
编辑后的提交事件!
larson001 2003-07-23
  • 打赏
  • 举报
回复
问chenee543216(chenee):
只有两列,第二列有不定个数的TextBox(编写代码时,不能确定其个数,即第一列绑定的行数;数据库中数据改变时,行数亦变)供输入,你提供的代码具体该写在什么事件中呢?
chenee543216 2003-07-23
  • 打赏
  • 举报
回复
条件是你加如模板列的textbox 的id是TextBox1
chenee543216 2003-07-23
  • 打赏
  • 举报
回复
在点击选择列时:

int id=e.Item.ItemIndex;
System.Web.UI.WebControls.TextBox tb=(System.Web.UI.WebControls.TextBox)this.DataGrid1.Items[id].Cells[1].FindControl("TextBox1");
this.TextBox2.Text=tb.Text;//在textBox2中显示你想要的数据
this.DataGrid1.EditItemIndex=-1;
this.BindGrid();
this.DataGrid1.Items[id].Cells[1].Text=tb.Text;
xrll 2003-07-23
  • 打赏
  • 举报
回复
可以用动态增加模板列。
ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cptskCreatingTemplatesProgrammaticallyInDataGridControl.htm
http://expert.csdn.net/Expert/topic/1839/1839676.xml?temp=1.298159E-02
ruyedian 2003-07-23
  • 打赏
  • 举报
回复
如果是第一行:
Dim a As String
a = Ctype(DataGrindName.Items(0).FindControl("txt"),CheckBox).Text
所有:
Dim i As Integer
For i=0 To DataGridName.Items.Count-1
...
?? = Ctype(DataGrindName.Items(i).FindControl("txt"),CheckBox).Text
Next
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2003-07-23 07:00
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。