请问DATAGRID怎么实现点击TEXTBOX控件弹出Calendar选择日期
谢谢了.
谢谢了.
解决方案 »
- 为什么换页后,取某一行的e.Item的值的时候,取的还是第一页的e.Item值啊。
- asp.net 程序定时执行
- 有两个网站A和B,他们共用一个sql2000的数据库 DBUser
- 如何在datagrid分页的页脚中添加“转向第几页”?给点思路
- 转换双字节字符为合法的URL传输字串,有没有c#版本阿?急!!!
- asp.net
- yyne大哥请进,关于对 XML 操作的 Web Service 代码错误一帖。
- 难点问题???能实现这样的效果吗
- “发表于2小时前”请问这种时间格式怎么做啊
- 如何解决 当选定GridView的某一行后,然后再通过其他事件刷新GridView后,仍然是该行处于选定状态的颜色?
- 求解答:.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模板列中