请问DATAGRID怎么实现点击TEXTBOX控件弹出Calendar选择日期 请问DATAGRID怎么实现点击TEXTBOX控件弹出Calendar选择日期 谢谢了. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前台------------------------- <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <cc1:PopupControlExtender ID="popcontorl" runat="server" PopupControlID ="Panel1" TargetControlID ="txtEnter" Position ="Right" > </cc1:PopupControlExtender> <asp:Panel ID="Panel1" runat="server"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Calendar ID="Calendar1" runat="server" BackColor="White" BorderColor="#3366CC" BorderWidth="1px" CellPadding="1" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt" ForeColor="#003399" Height="200px" onselectionchanged="Calendar1_SelectionChanged" Width="220px"> <SelectedDayStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" /> <SelectorStyle BackColor="#99CCCC" ForeColor="#336666" /> <WeekendDayStyle BackColor="#CCCCFF" /> <TodayDayStyle BackColor="#99CCCC" ForeColor="White" /> <OtherMonthDayStyle ForeColor="#999999" /> <NextPrevStyle Font-Size="8pt" ForeColor="#CCCCFF" /> <DayHeaderStyle BackColor="#99CCCC" ForeColor="#336666" Height="1px" /> <TitleStyle BackColor="#003399" BorderColor="#3366CC" BorderWidth="1px" Font-Bold="True" Font-Size="10pt" ForeColor="#CCCCFF" Height="25px" /> </asp:Calendar> </ContentTemplate> </asp:UpdatePanel> </asp:Panel>---------------------------后台 protected void Calendar1_SelectionChanged(object sender, EventArgs e) { popcontorl.Commit(Calendar1.SelectedDate.ToShortDateString()); } 此处用的到了ajax 其实就是几个控件而已。 看看前台代码 function calendar(isShowTime) //主调函数{ if(typeof(isShowTime)!="undefined") { bUseTime=isShowTime; } else { bUseTime = false; } if(bUseTime) { odatelayer.timer.style.display=''; } else { odatelayer.timer.style.display='none'; } var dads = document.all.endDateLayer.style; var tt = window.event.srcElement; var th = tt; var ttop = tt.offsetTop-5; //TT控件的定位点高 var thei = tt.clientHeight; //TT控件本身的高 var tleft = tt.offsetLeft; //TT控件的定位点宽 var ttyp = tt.type; //TT控件的类型 while (tt = tt.offsetParent){ttop+=tt.offsetTop; tleft+=tt.offsetLeft;} dads.top = (ttyp=="image") ? ttop+thei : ttop+thei+6; dads.left = tleft; outObject = th; outButton = th; //设定外部点击的按钮 //根据当前输入框的日期显示日历的年月 var reg = /^(\d+)-(\d{1,2})-(\d{1,2})/; //不含时间 var r = outObject.value.match(reg); if(r!=null){ r[2]=r[2]-1; var d=new Date(r[1],r[2],r[3]); if(d.getFullYear()==r[1] && d.getMonth()==r[2] && d.getDate()==r[3]) { outDate=d; parent.meizzTheYear = r[1]; parent.meizzTheMonth = r[2]; parent.meizzTheDate = r[3]; } else { outDate=""; } meizzSetDay(r[1],r[2]+1); } else { outDate=""; meizzSetDay(new Date().getFullYear(), new Date().getMonth() + 1); } dads.display = ''; //判断初始化时是否使用时间,非严格验证 //if (outObject.value.length>10) //{ // bUseTime=true; meizzWriteHead(meizzTheYear,meizzTheMonth); //} //else //{ // bUseTime=false; // meizzWriteHead(meizzTheYear,meizzTheMonth); //} try { event.returnValue=false; } catch (e) { //此处排除错误,错误原因暂未找到。 }}<asp:GridView ID="gridview1" Width="100%" runat="server" BorderWidth="0px" onrowdatabound="gridview1_RowDataBound" > <EmptyDataTemplate></EmptyDataTemplate><Columns><asp:TemplateField HeaderStyle-Width="5%" HeaderText=""> <ItemTemplate> <asp:TextBox ID="txtDate" runat="server"Style="cursor: hand" Width="146px"></asp:TextBox> </ItemTemplate> </asp:GridView>[code=C#]protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { TextBox txtDate = e.Row.FindControl("txtDate") as TextBox; if (txtDate != null) { txtDate.Attributes.Add("onclick", "calendar(false)"); } } }[/code] 饿.我想要的是DATAGRID里面的呀..普通的TEXTBOX的我弄的好.就是在DATAGRID里的TEXTBOX怎么取就整不出来了... function calendar(isShowTime) //主调函数{ if(typeof(isShowTime)!="undefined") { bUseTime=isShowTime; } else { bUseTime = false; } if(bUseTime) { odatelayer.timer.style.display=''; } else { odatelayer.timer.style.display='none'; } var dads = document.all.endDateLayer.style; var tt = window.event.srcElement; var th = tt; var ttop = tt.offsetTop-5; //TT控件的定位点高 var thei = tt.clientHeight; //TT控件本身的高 var tleft = tt.offsetLeft; //TT控件的定位点宽 var ttyp = tt.type; //TT控件的类型 while (tt = tt.offsetParent){ttop+=tt.offsetTop; tleft+=tt.offsetLeft;} dads.top = (ttyp=="image") ? ttop+thei : ttop+thei+6; dads.left = tleft; outObject = th; outButton = th; //设定外部点击的按钮 //根据当前输入框的日期显示日历的年月 var reg = /^(\d+)-(\d{1,2})-(\d{1,2})/; //不含时间 var r = outObject.value.match(reg); if(r!=null){ r[2]=r[2]-1; var d=new Date(r[1],r[2],r[3]); if(d.getFullYear()==r[1] && d.getMonth()==r[2] && d.getDate()==r[3]) { outDate=d; parent.meizzTheYear = r[1]; parent.meizzTheMonth = r[2]; parent.meizzTheDate = r[3]; } else { outDate=""; } meizzSetDay(r[1],r[2]+1); } else { outDate=""; meizzSetDay(new Date().getFullYear(), new Date().getMonth() + 1); } dads.display = ''; //判断初始化时是否使用时间,非严格验证 //if (outObject.value.length>10) //{ // bUseTime=true; meizzWriteHead(meizzTheYear,meizzTheMonth); //} //else //{ // bUseTime=false; // meizzWriteHead(meizzTheYear,meizzTheMonth); //} try { event.returnValue=false; } catch (e) { //此处排除错误,错误原因暂未找到。 }}<asp:GridView ID="gridview1" Width="100%" runat="server" BorderWidth="0px" onrowdatabound="gridview1_RowDataBound" > <EmptyDataTemplate></EmptyDataTemplate><Columns><asp:TemplateField HeaderStyle-Width="5%" HeaderText=""> <ItemTemplate> <asp:TextBox ID="txtDate" runat="server"Style="cursor: hand" Width="146px"></asp:TextBox> </ItemTemplate> </asp:GridView>protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { TextBox txtDate = e.Row.FindControl("txtDate") as TextBox; if (txtDate != null) { txtDate.Attributes.Add("onclick", "calendar(false)"); } } } 使用模板列,模板列里面用Calendar控件 使用模板列,模板列里面用Calendar控件能详细点么..请问有例子么..谢谢了楼上的能给个DATAGRID的我么..gridview完全没用过.. 这里就有源码:http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Calendar/Calendar.aspx注意 TextBox 和 Calendar 都要在DataGrid模板列中 ASP.net添加数据的问题 易想多用户商城仿淘宝网版会有什么问题吗? vs2010写的网站没用到net4.0的东西,可以在net2.0的服务器上运行吗 treeview中在节点设置NavigateUrl后,SelectedNodeStyle不起作用 连接数据库,说未关闭的错误 JS鼠标的位置问题 急需要一种虚拟打印机,可以没有打印的宽度和高度限制的那种 请教一个关于在。NET里要实现与QQ中某一个功能相同的问题 请问ASP.NET中用户控件继承时,ascx文件中的内容可以被继承吗 可以把一个.dll文件反编绎成.cs文件吗? 求解答:.NET中URL传值的方法 跪求解答!!
-------------------------
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<cc1:PopupControlExtender ID="popcontorl" runat="server"
PopupControlID ="Panel1" TargetControlID ="txtEnter" Position ="Right" >
</cc1:PopupControlExtender>
<asp:Panel ID="Panel1" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Calendar ID="Calendar1" runat="server" BackColor="White"
BorderColor="#3366CC" BorderWidth="1px" CellPadding="1"
DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt"
ForeColor="#003399" Height="200px"
onselectionchanged="Calendar1_SelectionChanged" Width="220px">
<SelectedDayStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
<SelectorStyle BackColor="#99CCCC" ForeColor="#336666" />
<WeekendDayStyle BackColor="#CCCCFF" />
<TodayDayStyle BackColor="#99CCCC" ForeColor="White" />
<OtherMonthDayStyle ForeColor="#999999" />
<NextPrevStyle Font-Size="8pt" ForeColor="#CCCCFF" />
<DayHeaderStyle BackColor="#99CCCC" ForeColor="#336666" Height="1px" />
<TitleStyle BackColor="#003399" BorderColor="#3366CC" BorderWidth="1px"
Font-Bold="True" Font-Size="10pt" ForeColor="#CCCCFF" Height="25px" />
</asp:Calendar>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
---------------------------后台
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
popcontorl.Commit(Calendar1.SelectedDate.ToShortDateString());
}
{
if(typeof(isShowTime)!="undefined")
{
bUseTime=isShowTime;
}
else
{
bUseTime = false;
}
if(bUseTime)
{
odatelayer.timer.style.display='';
}
else
{
odatelayer.timer.style.display='none';
}
var dads = document.all.endDateLayer.style;
var tt = window.event.srcElement;
var th = tt;
var ttop = tt.offsetTop-5; //TT控件的定位点高
var thei = tt.clientHeight; //TT控件本身的高
var tleft = tt.offsetLeft; //TT控件的定位点宽 var ttyp = tt.type; //TT控件的类型 while (tt = tt.offsetParent){ttop+=tt.offsetTop; tleft+=tt.offsetLeft;}
dads.top = (ttyp=="image") ? ttop+thei : ttop+thei+6;
dads.left = tleft;
outObject = th;
outButton = th; //设定外部点击的按钮 //根据当前输入框的日期显示日历的年月
var reg = /^(\d+)-(\d{1,2})-(\d{1,2})/; //不含时间
var r = outObject.value.match(reg);
if(r!=null){
r[2]=r[2]-1;
var d=new Date(r[1],r[2],r[3]);
if(d.getFullYear()==r[1] && d.getMonth()==r[2] && d.getDate()==r[3])
{
outDate=d;
parent.meizzTheYear = r[1];
parent.meizzTheMonth = r[2];
parent.meizzTheDate = r[3];
}
else
{
outDate="";
}
meizzSetDay(r[1],r[2]+1);
}
else
{
outDate="";
meizzSetDay(new Date().getFullYear(), new Date().getMonth() + 1);
}
dads.display = ''; //判断初始化时是否使用时间,非严格验证
//if (outObject.value.length>10)
//{
// bUseTime=true;
meizzWriteHead(meizzTheYear,meizzTheMonth);
//}
//else
//{
// bUseTime=false;
// meizzWriteHead(meizzTheYear,meizzTheMonth);
//} try
{
event.returnValue=false;
}
catch (e)
{
//此处排除错误,错误原因暂未找到。
}
}<asp:GridView ID="gridview1" Width="100%" runat="server" BorderWidth="0px"
onrowdatabound="gridview1_RowDataBound" >
<EmptyDataTemplate>
</EmptyDataTemplate>
<Columns>
<asp:TemplateField HeaderStyle-Width="5%" HeaderText="">
<ItemTemplate>
<asp:TextBox ID="txtDate" runat="server"Style="cursor: hand" Width="146px"></asp:TextBox>
</ItemTemplate>
</asp:GridView>[code=C#]
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox txtDate = e.Row.FindControl("txtDate") as TextBox;
if (txtDate != null)
{
txtDate.Attributes.Add("onclick", "calendar(false)");
}
}
}
[/code]
普通的TEXTBOX的我弄的好.就是在DATAGRID里的TEXTBOX怎么取就整不出来了...
function calendar(isShowTime) //主调函数
{
if(typeof(isShowTime)!="undefined")
{
bUseTime=isShowTime;
}
else
{
bUseTime = false;
}
if(bUseTime)
{
odatelayer.timer.style.display='';
}
else
{
odatelayer.timer.style.display='none';
}
var dads = document.all.endDateLayer.style;
var tt = window.event.srcElement;
var th = tt;
var ttop = tt.offsetTop-5; //TT控件的定位点高
var thei = tt.clientHeight; //TT控件本身的高
var tleft = tt.offsetLeft; //TT控件的定位点宽 var ttyp = tt.type; //TT控件的类型 while (tt = tt.offsetParent){ttop+=tt.offsetTop; tleft+=tt.offsetLeft;}
dads.top = (ttyp=="image") ? ttop+thei : ttop+thei+6;
dads.left = tleft;
outObject = th;
outButton = th; //设定外部点击的按钮 //根据当前输入框的日期显示日历的年月
var reg = /^(\d+)-(\d{1,2})-(\d{1,2})/; //不含时间
var r = outObject.value.match(reg);
if(r!=null){
r[2]=r[2]-1;
var d=new Date(r[1],r[2],r[3]);
if(d.getFullYear()==r[1] && d.getMonth()==r[2] && d.getDate()==r[3])
{
outDate=d;
parent.meizzTheYear = r[1];
parent.meizzTheMonth = r[2];
parent.meizzTheDate = r[3];
}
else
{
outDate="";
}
meizzSetDay(r[1],r[2]+1);
}
else
{
outDate="";
meizzSetDay(new Date().getFullYear(), new Date().getMonth() + 1);
}
dads.display = ''; //判断初始化时是否使用时间,非严格验证
//if (outObject.value.length>10)
//{
// bUseTime=true;
meizzWriteHead(meizzTheYear,meizzTheMonth);
//}
//else
//{
// bUseTime=false;
// meizzWriteHead(meizzTheYear,meizzTheMonth);
//} try
{
event.returnValue=false;
}
catch (e)
{
//此处排除错误,错误原因暂未找到。
}
}<asp:GridView ID="gridview1" Width="100%" runat="server" BorderWidth="0px"
onrowdatabound="gridview1_RowDataBound" >
<EmptyDataTemplate>
</EmptyDataTemplate>
<Columns>
<asp:TemplateField HeaderStyle-Width="5%" HeaderText="">
<ItemTemplate>
<asp:TextBox ID="txtDate" runat="server"Style="cursor: hand" Width="146px"></asp:TextBox>
</ItemTemplate>
</asp:GridView>
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox txtDate = e.Row.FindControl("txtDate") as TextBox;
if (txtDate != null)
{
txtDate.Attributes.Add("onclick", "calendar(false)");
}
}
}
能详细点么..请问有例子么..
谢谢了楼上的能给个DATAGRID的我么..gridview完全没用过..
http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Calendar/Calendar.aspx注意 TextBox 和 Calendar 都要在DataGrid模板列中