点击确定后,gridview中标签怎么取值

lanxi1998 2010-11-08 08:58:47
<div>
<div>
<asp:Button ID="btnChoose" runat="server" Text="设备选择" Width="100px"
onclick="btnChoose_Click" />
<asp:TextBox ID="txtChoose" runat="server" Width="315px"></asp:TextBox>
</div>
<div>
日期:<asp:TextBox ID="txtDay" runat="server" onFocus="new WdatePicker(this,'%Y-%M',true,'default')"></asp:TextBox>
 
<asp:Button ID="btnOK" runat="server" Text="确 定" Width="65px"
OnClick="btnOK_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="年月">
<ItemTemplate>
<asp:Label ID="lblDate" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="设备编号">
<ItemTemplate>
<asp:Label ID="lblEquipment" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="设备名称">
<ItemTemplate>
<asp:Label ID="lblEquName" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流A(大)">
<ItemTemplate>
<asp:Label ID="lblMaxA" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流B(大)">
<ItemTemplate>
<asp:Label ID="lblMaxB" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流C(大)">
<ItemTemplate>
<asp:Label ID="lblMaxC" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流A(小)">
<ItemTemplate>
<asp:Label ID="lblMinA" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流B(小)">
<ItemTemplate>
<asp:Label ID="lblMinB" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流C(小)">
<ItemTemplate>
<asp:Label ID="lblMinC" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流A(平)">
<ItemTemplate>
<asp:Label ID="lblAvgA" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流B(平)">
<ItemTemplate>
<asp:Label ID="lblAvgB" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="电流C(平)">
<ItemTemplate>
<asp:Label ID="lblAvgC" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>



protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["sb"] != null)
{
ViewState["sb"] = Request.QueryString["sb"];
this.txtChoose.Text = ViewState["sb"].ToString();
}
}
}

protected void btnChoose_Click(object sender, EventArgs e)
{
Response.Redirect("EquipmentChoose.aspx?page=VoltageTest.aspx");
}

protected void btnOK_Click(object sender, EventArgs e)
{
string[] str = (ViewState["sb"].ToString()).Split(',');
foreach (String s in str)
{
(this.GridView1.FindControl("lblDate") as Label).Text = this.txtDay.Text;//这边值赋不进label中,该怎么办呢?请高手指教
}
//(e.Row.FindControl("lblDate") as Label).Text = this.txtDay.Text;
}
...全文
152 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
请问一下,你点击BtnOK这个按钮的时候,才给这个控件赋值的吗,那我告诉你,这样是取不到的,100%取不到,你应该在页面加载的时候就应该赋值!

第一:你页面加载的时候,是否能取到string[] str = (ViewState["sb"].ToString()).Split(',');
这个值,如果能,进入下一步

第二: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string[] str = (ViewState["sb"].ToString()).Split(',');
//断点调试下,确保sb能取到
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (String s in str)
{

//必须确保取到值,然后才能在RowDataBound绑定中绑定值
string date = (this.GridView1.FindControl("lblDate") as
Label).Text

date=this.txtDay.Text.ToString();

}

}

}
lanxi1998 2010-11-08
  • 打赏
  • 举报
回复
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
Label lblDate = (Label)this.GridView1.Rows[i].FindControl("lblDate");
lblDate.Text = this.txtDay.Text;
}

这样写不行,因为gridview 一开始没有值,所以this.GridView1.Rows.Count也就是零,不行
lanxi1998 2010-11-08
  • 打赏
  • 举报
回复
我上面的那个foreach是循环另一个字段的,现在nlx0201的朋友说的这个方法不报错了,但gridview 还是不能显示
我的gridview一开始是空的,没有值,都是要用代码赋进去的
csdnflys 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 h465716405 的回复:]
GridView1都是绑定数据的。。貌似没法赋值。。要不在数据库里面再加一个字段吧。。
[/Quote]
支持楼上!!
h465716405 2010-11-08
  • 打赏
  • 举报
回复
GridView1都是绑定数据的。。貌似没法赋值。。要不在数据库里面再加一个字段吧。。
nlx0201 2010-11-08
  • 打赏
  • 举报
回复
我不知道你上面的那个foreach是做什么的,但是gridview一般是有多行的,如果你要赋值的话也是应该用循环赋值的,如下:
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
Label lblDate = (Label)this.GridView1.Rows[i].FindControl("lblDate");
lblDate.Text = this.txtDay.Text;
}
lanxi1998 2010-11-08
  • 打赏
  • 举报
回复
我的数据库值是不可以改变的,现在只想在界面上点击确定按钮后,把
this.txtDay.Text赋给(this.GridView1.FindControl("lblDate") as Label).Text
我这样写(this.GridView1.FindControl("lblDate") as Label).Text = this.txtDay.Text;
报未将对象引用到实例,请问怎样才能把值给赋到
this.GridView1.FindControl("lblDate") as Label).Text

  • 打赏
  • 举报
回复
GridView1是通过绑定显示数据的? 貌似可以将txtDay.Text保存到数据库在读取出来重新绑定 ?
lanxi1998 2010-11-08
  • 打赏
  • 举报
回复
点击确定按钮后,我想把
this.txtDay.Text赋给(this.GridView1.FindControl("lblDate") as Label).Text
不知道该怎么赋值,能给讲具体不
hch126163 2010-11-08
  • 打赏
  • 举报
回复
foreach (String s in str)
{
(this.GridView1.FindControl("lblDate") as Label).Text = this.txtDay.Text;//这边值赋不进label中,该怎么办呢?请高手指教
}

楼主,你要做什么呢?逻辑明显错误!!!

你遍历一个string[] str,而有不用 s 这个值!而你的赋值语句,始终赋的都是this.txtDay.Text 值!!
这样为什么要循环呢?赋值一次不就可以了?

GridView1.FindControl("lblDate") GridView1 每行都有一个lblDate !!你这样,服务器究竟返回哪一个lblDate呢?

你如果是要每行的lblDate 都要赋值!那你是否应该循环GridView1.Rows 呢?
lanxi1998 2010-11-08
  • 打赏
  • 举报
回复
(this.GridView1.FindControl("lblDate") as Label).Text = this.txtDay.Text;
//这边值赋不进label中,该怎么办呢?请高手指教
qimaozhifu 2010-11-08
  • 打赏
  • 举报
回复
不错,同学

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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

试试用AI创作助手写篇文章吧