问题描述
在gridview1,自定义textbox列,在输入数值后,通过按钮保存其数值,但通过DimtAsTextBox=CType(GridView1.Rows(i).FindControl("txtOnePrice"),TextBox)获取的数值,都是空值,不知道什么原因,从昨晚折腾到现在了,请老鸟指点,感激不尽!!!<%@PageLanguage="vb"EnableViewState="true"AutoEventWireup="false"MasterPageFile="~/Site1.Master"CodeBehind="wydc.aspx.vb"Inherits="Web.wydc"title="在线订餐"%><asp:ContentID="Content1"ContentPlaceHolderID="head"runat="server"></asp:Content><asp:ContentID="Content2"ContentPlaceHolderID="ContentPlaceHolder1"runat="server"><asp:PanelID="Panel2"runat="server"Visible="False"><asp:CalendarID="Calendar1"runat="server"BackColor="#FFFFCC"BorderColor="#FFCC66"BorderWidth="1px"DayNameFormat="Shortest"Font-Names="Verdana"Font-Size="8pt"ForeColor="#663399"Height="200px"ShowGridLines="True"Width="220px"><SelectedDayStyleBackColor="#CCCCFF"Font-Bold="True"/><SelectorStyleBackColor="#FFCC66"/><TodayDayStyleBackColor="#FFCC66"ForeColor="White"/><OtherMonthDayStyleForeColor="#CC9966"/><NextPrevStyleFont-Size="9pt"ForeColor="#FFFFCC"/><DayHeaderStyleBackColor="#FFCC66"Font-Bold="True"Height="1px"/><TitleStyleBackColor="#990000"Font-Bold="True"Font-Size="9pt"ForeColor="#FFFFCC"/></asp:Calendar><asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"BackColor="White"BorderColor="#999999"BorderStyle="None"BorderWidth="1px"CellPadding="3"GridLines="Vertical"><RowStyleBackColor="#EEEEEE"ForeColor="Black"/><Columns><asp:BoundFieldDataField="餐次名称"FooterText="预定餐次"HeaderText="预定餐次"/><asp:BoundFieldDataField="开始时间"FooterText="开始时间"HeaderText="开始时间"/><asp:BoundFieldDataField="结束时间"FooterText="结束时间"HeaderText="结束时间"/><asp:BoundFieldDataField="订餐份数"FooterText="已订份数"HeaderText="已订份数"/><asp:TemplateFieldFooterText="订餐份数"HeaderText="订餐份数"><ItemTemplate><asp:TextBoxID="txtOnePrice"runat="server"Height="21px"Width="75px"></asp:TextBox></ItemTemplate></asp:TemplateField><asp:ButtonFieldFooterText="订餐"HeaderText="订餐"Text="订餐"/></Columns><FooterStyleBackColor="#CCCCCC"ForeColor="Black"/><PagerStyleBackColor="#999999"ForeColor="Black"HorizontalAlign="Center"/><SelectedRowStyleBackColor="#008A8C"Font-Bold="True"ForeColor="White"/><HeaderStyleBackColor="#000084"Font-Bold="True"ForeColor="White"/><AlternatingRowStyleBackColor="Gainsboro"/></asp:GridView> <asp:ButtonID="Button2"runat="server"Text="保存订餐信息"/></asp:Panel></asp:Content>以下是vb代码PublicPartialClasswydcInheritsSystem.Web.UI.PagePublicdtccAsNewDataTableProtectedSubPage_Load(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.LoadIfSession("loginuserbh")<>""ThenPanel2.Visible=TrueDimxfsAsNewService1'这是个webservicedtcc=xfs.select_canci(Session("loginuserbh"),IIf(Format(Calendar1.SelectedDate,"yyyy-MM-dd")="0001-01-01",Date.Now,Format(Calendar1.SelectedDate,"yyyy-MM-dd")))GridView1.DataSource=dtccGridView1.DataBind()EndIfEndSubProtectedSubButton2_Click(ByValsenderAsObject,ByValeAsEventArgs)HandlesButton2.ClickFori=0Todtcc.Rows.Count-1dtcc.Rows(i).Item("编号")=Session("loginuserbh")dtcc.Rows(i).Item("姓名")=Session("loginuserxm")dtcc.Rows(i).Item("订餐日期")=IIf(Format(Calendar1.SelectedDate,"yyyy-MM-dd")="0001-01-01",Date.Now,Format(Calendar1.SelectedDate,"yyyy-MM-dd"))DimtAsTextBox=CType(GridView1.Rows(i).FindControl("txtOnePrice"),TextBox)dtcc.Rows(i).Item("订餐份数")=t.Text'这里一直显示的是空值NextDimxfsAsNewService1xfs.dc(dtcc)EndSubProtectedSubGridView1_RowCommand(ByValsenderAsObject,ByValeAsSystem.Web.UI.WebControls.GridViewCommandEventArgs)HandlesGridView1.RowCommandDimindexAsInteger=Convert.ToInt32(e.CommandArgument)DimtAsTextBox=CType(GridView1.Rows(index).FindControl("txtOnePrice"),TextBox)dtcc.Rows(index).Item("订餐份数")=t.TextEndSubEndClass
解决方案
解决方案二:
自定义列是你那样的吗?参考:<asp:TemplateFieldHeaderText="编号"><ItemTemplate><asp:TextBoxID="txtOnePrice"runat="server"Height="21px"Width="75px"/></ItemTemplate></asp:TemplateField>
解决方案三:
对不起,看错了,你那样是对的。。。。
解决方案四:
是因为数据绑定的原因么,那一列没绑定,还有在textbox_TextChanged事件里里面没有任何反应
解决方案五:
引用3楼的回复:
是因为数据绑定的原因么,那一列没绑定,还有在textbox_TextChanged事件里里面没有任何反应
运行后的页面代码,看看textbox在不在页面里
解决方案六:
怎么看?
解决方案七:
先跟踪一下看看FindControl有没有找到哪个textbox。
解决方案八:
问题解决了,在Page_Load时数据又被重新加载了