有关TemplateColumn及数据类型转换
我在SQL数据表里有一个字段是datetime类型的.我往这个字段插入一个datetime型的数据"1988-1-1",可是当我把这个值用datagrid显示出来时,它变成了"1988-1-1 0:00:00",然后我用了BoundColumn的DataFormatString属性解决了这个问题,使其显示为"1988-1-1",即:
<BoundColumn DataFormatString={0:d}></BoundColumn>
可是后来,我改用了TemplateColumn模板,它不支持DataFormatString属性,显示出来的日期又变成了1988-1-1 0:00:00,请问各位这怎么办?后来改用的代码为:
<asp:TemplateColumn HeaderText="生日" SortExpression="birthday">
<ItemTemplate>
<asp:label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "birthday") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="textbox_birthday" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "birthday") %>'/>
<asp:requiredfieldvalidator id="rfv_birthday" runat="server" ErrorMessage="*" Display="Dynamic" ControlToValidate="textbox_birthday"/>
</EditItemTemplate>
</asp:TemplateColumn>
我要用验证控件,所以必须用TemplateColumn
或者我用BoundColumn,那怎么使用验证控件呢?
问题点数:50、回复次数:10Top
1 楼saucer(思归)回复于 2003-09-04 02:31:00 得分 30
add a third parameter to DataBinder.Eval:
<asp:label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "birthday","{0:d}") %>'/>Top
2 楼cnhgj(戏子) (没时间练太极)回复于 2003-09-04 02:36:36 得分 7
<asp:label runat="server" Text='<%# string.Format("{0:d}",DataBinder.Eval(Container.DataItem, "birthday") %>'/>
Top
3 楼cnhgj(戏子) (没时间练太极)回复于 2003-09-04 02:36:55 得分 0
<asp:label runat="server" Text='<%# string.Format("{0:d}",DataBinder.Eval(Container.DataItem, "birthday")) %>'/>Top
4 楼BenZ004(仲陵)回复于 2003-09-04 05:05:16 得分 7
1:你可以在数据库查询时就把birthday这个字段用substring()来截取;
2,在模板列中加一个参数:<asp:label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "birthday","{0:d}") %>'/>Top
5 楼yewei4u(yewei)回复于 2003-09-04 08:32:20 得分 1
DataBinder.Eval()Top
6 楼alan99(阿蓝)回复于 2003-09-04 14:34:12 得分 0
请教一段程序,我想实现DATAGRID里的单行数据就地更新,下面是UPDATE的响应程序,好像有问题,是不是方法不对?请指教:
void dg_update(object sender,DataGridCommandEventArgs e)
{
string username=e.Item.Cells[1].Text;
string password=((System.Web.UI.WebControls.TextBox)e.Item.Cells[2].Controls[0]).Text.Trim();
string sex=((System.Web.UI.WebControls.TextBox)e.Item.Cells[3].Controls[0]).Text.Trim();
string birthday=((System.Web.UI.WebControls.TextBox)e.Item.Cells[4].Controls[0]).Text.Trim();
string tel=((System.Web.UI.WebControls.TextBox)e.Item.Cells[5].Controls[0]).Text.Trim();
string email=((System.Web.UI.WebControls.TextBox)e.Item.Cells[6].Controls[0]).Text.Replace("'","''").Trim();
string favour=((System.Web.UI.WebControls.TextBox)e.Item.Cells[7].Controls[0]).Text.Replace("'","''").Trim();
string proverb=((System.Web.UI.WebControls.TextBox)e.Item.Cells[8].Controls[0]).Text.Replace("'","''").Trim();
string string_cn="server=10.137.8.101;database=mydb;uid=sa;pwd=sa";
SqlConnection cn=new SqlConnection(string_cn);
cn.Open();
SqlDataAdapter mydataadapter=new SqlDataAdapter();
string string_search="select * from table_user where username='"+username+"'";
string string_update="update table_user set password='"+password+"',sex='"+sex+"',birthday='"+birthday+"',tel='"+tel
+"',email='"+email+"',favour='"+favour+"',proverb='"+proverb+"'where username='"+username+"'";
mydataadapter.SelectCommand=new SqlCommand(string_search,cn);
mydataadapter.UpdateCommand=new SqlCommand(string_update,cn);
DataSet mydataset=new DataSet();
mydataadapter.Fill(mydataset,"table_user");
mydataset.Tables["table_user"].Rows[0]["password"]=password;
mydataset.Tables["table_user"].Rows[0]["sex"]=sex;
mydataset.Tables["table_user"].Rows[0]["birthday"]=DateTime.Parse(birthday);
mydataset.Tables["table_user"].Rows[0]["tel"]=tel;
mydataset.Tables["table_user"].Rows[0]["email"]=email;
mydataset.Tables["table_user"].Rows[0]["favour"]=favour;
mydataset.Tables["table_user"].Rows[0]["proverb"]=proverb;
mydataadapter.Update(mydataset,"table_user");
dg_search.DataSource=mydataset.Tables["table_user"].DefaultView;
dg_search.DataBind();
cn.Close();
}Top
7 楼saucer(思归)回复于 2003-09-04 20:25:43 得分 0
string string_update="update table_user set password='"+password+"',sex='"+sex+"',birthday='"+birthday+"',tel='"+tel
+"',email='"+email+"',favour='"+favour+"',proverb='"+proverb+"'where username='"+username+"'";
SqlCommmand cmd = new SqlCommand(string_update,cn);
cmd.ExecuteNonQuery();
SqlDataAdapter mydataadapter=new SqlDataAdapter();
string string_search="select * from table_user where username='"+username+"'";
mydataadapter.SelectCommand=new SqlCommand(string_search,cn);
DataSet mydataset=new DataSet();
mydataadapter.Fill(mydataset,"table_user");
cn.Close();
dg_search.DataSource=mydataset.Tables["table_user"].DefaultView;
dg_search.DataBind();
Top
8 楼alan99(阿蓝)回复于 2003-09-04 22:06:19 得分 0
思归,你的方法是不通过DATASET直接修改数据库吧,我试过了,还是出错啊,编译是能通过,但运行时出错.
直接修改数据库与通过DATASET有什么区别?Top
9 楼alan99(阿蓝)回复于 2003-09-05 12:04:19 得分 0
思归,好像是这部份有问题,报错说转换无效:
string username=e.Item.Cells[1].Text;
string password=((System.Web.UI.WebControls.TextBox)e.Item.Cells[2].Controls[0]).Text.Trim();
string sex=((System.Web.UI.WebControls.TextBox)e.Item.Cells[3].Controls[0]).Text.Trim();
string birthday=((System.Web.UI.WebControls.TextBox)e.Item.Cells[4].Controls[0]).Text.Trim();
string tel=((System.Web.UI.WebControls.TextBox)e.Item.Cells[5].Controls[0]).Text.Trim();
string email=((System.Web.UI.WebControls.TextBox)e.Item.Cells[6].Controls[0]).Text.Replace("'","''").Trim();
string favour=((System.Web.UI.WebControls.TextBox)e.Item.Cells[7].Controls[0]).Text.Replace("'","''").Trim();
string proverb=((System.Web.UI.WebControls.TextBox)e.Item.Cells[8].Controls[0]).Text.Replace("'","''").Trim();Top
10 楼caoit(lost)回复于 2003-09-06 11:23:21 得分 5
用循环会好一点,Top



