gridview中label和textbox控件取值与保存到SQL数据中。
我在数据库中定义了这两个时间字段(图1),并在gridview中编辑了这两列:<asp:TemplateFieldHeaderText="上月录入时间"><ItemTem...
我在数据库中定义了这两个时间字段(图1),并在gridview中编辑了这两列:
<asp:TemplateField HeaderText="上月录入时间">
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("lastmounthtime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="本月录入时间">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text="" Width="78px" BorderColor="#cccccc" BorderStyle="NotSet" BorderWidth="1px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
(数据库定义字段)(时间是乱取的,希望大家不要介意)
(gridview中编辑的两列,“上月录入时间”列绑定lastmounthtime这个字段)
现在我的想法是,我怎么让“上月录入时间”中的label控件获取“2013-7-15”这个时间(也就是thismounthtime字段中的最新的时间值),然后“本月录入时间”列中的textbox控件可以手动填入时间(比如2013-8-15),最后点“保存”按钮,gridview中的这个数据(即,上月录入时间:2013-7-15;本月录入时间:2013-8-15)就保存到数据库中。
后台我用的是C#编程:
问题一:我怎么才能让“上月录入时间”列(绑定的是lastmounthtime)中的label控件获取“2013-7-15”这个时间(也就是thismounthtime字段中的最新的时间值)?
问题二:我在“本月录入时间”列中的textbox控件手动填入时间(比如2013-8-15)之后,点击保存,我该怎么获取这两个新值,并将它保存到数据库中?(PS:保存到数据的语句我用的是insert这个语句,但是我不懂怎么获取这两个新值。) 展开
<asp:TemplateField HeaderText="上月录入时间">
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Bind("lastmounthtime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="本月录入时间">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text="" Width="78px" BorderColor="#cccccc" BorderStyle="NotSet" BorderWidth="1px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
(数据库定义字段)(时间是乱取的,希望大家不要介意)
(gridview中编辑的两列,“上月录入时间”列绑定lastmounthtime这个字段)
现在我的想法是,我怎么让“上月录入时间”中的label控件获取“2013-7-15”这个时间(也就是thismounthtime字段中的最新的时间值),然后“本月录入时间”列中的textbox控件可以手动填入时间(比如2013-8-15),最后点“保存”按钮,gridview中的这个数据(即,上月录入时间:2013-7-15;本月录入时间:2013-8-15)就保存到数据库中。
后台我用的是C#编程:
问题一:我怎么才能让“上月录入时间”列(绑定的是lastmounthtime)中的label控件获取“2013-7-15”这个时间(也就是thismounthtime字段中的最新的时间值)?
问题二:我在“本月录入时间”列中的textbox控件手动填入时间(比如2013-8-15)之后,点击保存,我该怎么获取这两个新值,并将它保存到数据库中?(PS:保存到数据的语句我用的是insert这个语句,但是我不懂怎么获取这两个新值。) 展开
2个回答
展开全部
问题一:label控件不必获取thismounthtime字段的值,你就一直取lastmounthtime这个字段好了。当你提交到数据库时,进行这样的操作:
UPDATE [table1] SET lastmounthtime=thismounthtime,thismounthtime='传TextBox上面的值进来' WHERE ID='[ID]'
问题二:为毛要用Insert保存,我上面不是白写啦 - -!,好吧,我认命了,上面先不改,继续往下看:
Gridview上面总该要有编辑按钮吧?不然怎么触发呢;是用CommandField触发RowEditing事件吗?如果是,接着往下看:
假定label的ID为"lblLastTime",textbox的ID为"txtThisTime",那C#中获取它们的值的办法如下(须要使用gridview1的RowUpdating事件):
protected void Gridivew1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Label lblLastTime = Gridivew1.Rows[e.RowIndex].FindControl("lblLastTime") as Label;
TextBox txtThisTime = Gridivew1.Rows[e.RowIndex].FindControl("txtThisTime") as TextBox;
string lastTime = lblLastTime.Text;
string thisTime = txtThisTime.Text;
string id = Gridivew1.DataKeys[e.RowIndex].Value.ToString(); //gridview要设定好主键,我假设为ID
string sql = "UPDATE [table1] SET lastmounthtime=thismounthtime,thismounthtime='" + thisTime + "' WHERE ID='" + id + "'";
DbHelperSQL.ExecuteSql(sql); //调用自己封装好的方法执行数据库操作
}
楼主先看看上面的资料有没有启发的作用,如果仍然要坚持自己的办法,请追问,谢谢。
更多追问追答
追问
对于你说的不必获取thismounthtime的值这事,是可以这样做,但是这好像不怎么好,毕竟是要显示出来的,到时输入“本月录入时间”时,看到“上月录入时间”显示的是上两个月的时间,这样效果不太好。
追答
那就直接把【上月录入时间】改用模板列,比如:
<asp:TemplateField HeaderText="上月录入时间">
<ItemTemplate>
<asp:Label ID="lblLastTime" runat="server" Text="<%# Eval("lastmounthtime") %>">
<span style="display:none;"><asp:Label ID="lblThisTime" runat="server" Text="<%# Eval("thismounthtime") %>"></asp:Label></span>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
当你进入编辑状态时(触发gridview的RowEditing事件)
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Label lblThisTime= GridView1.Rows[e.NewEditIndex].FindControl("lblThisTime") as Label;
Label lblLastTime= GridView1.Rows[e.NewEditIndex].FindControl("lblLastTime") as Label;
lblLastTime.Text = lblThisTime.Text;
}
这个只是在界面显示效果达到了楼主的要求,数据库的操作还是跟我上面的那段SQL语句一样的做法。
展开全部
label取值,多加一个隐藏列,绑定thismounthtime值,取时取隐藏列的值就行了
<asp:TemplateField HeaderText="本月录入时间" Visible="false">
<ItemTemplate><%# Eval("thismounthtime")
</ItemTemplate>
2. 添加至数据库时,参考下面这段代码:
for (int i = 0; i < GridView1.Rows.Count; i++)
{
Label lb=(Label)GridView1.Rows[i].FindControl("Label4");
TextBox tbx = (TextBox)GridView1.Rows[i].FindControl("TextBox1");
lb.Text=GridView1.Rows[i].Cells[1].Text;//cells[这里写thismounthtime隐藏列所在的列值,从0起]
try
{
DateTime lastTime=Convert.ToDateTime(lb.Text);
DateTime thisTime=Convert.ToDateTime(tbx.Text);
String sql="insert into table(lasttime,thistime) values('"+lastTime+"','"+thisTime+"')";
//这里写添加至数据库的语句了
}
catch (Exception)
{
//throw;
}
}
追问
呃。。赋值现在可以了,我之前在隐藏列上也加了个label,所以才会出现空值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询