我有一个Datagrid里面邦定一个textbox,点击textbox后跳出日历窗口
如果这个Datagrid是一行内容的话,这个日历控件里面所选择的日期可以返回到datagrid里面的指定的textbox里面
如果datagrid超过一行以上的话,就返回不来值了,我查找原因在于Calendar日历是根据textbox的里面属性name进行返回的,如果datagrid超过一行以上就有重复的name了,所以日历选择的值返回不回来。
请教各位大侠给各解决的办法,代码如下1.这是datagrid里面加有textbox可以点击出现的日历代码
<ASP:DATAGRID id="MyDataGrid" Width="800px" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn DataField="task_id" HeaderText="任务ID"></asp:BoundColumn>
<asp:BoundColumn DataField="topic_id" HeaderText="主题ID"></asp:BoundColumn>
<asp:BoundColumn DataField="emp_code" HeaderText="工号"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="任务名称">
<ItemTemplate>
<asp:TextBox id=txt1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.task_name") %>' Width="50px" BorderStyle="Groove" BorderWidth=0 BackColor="#e7f1e5">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="计划开始时间">
<ItemTemplate>
<INPUT onclick="window.open('calendar.aspx?formname=frmCalendar.txtDate','calendar_window','width=277,height=200');calendar_window.focus()"
type="text" size="9" name="txtDate" id="txtDate">
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="计划结束时间">
<ItemTemplate>
<asp:TextBox id="txt3" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.plan_end") %>' Width="50px" BorderStyle="Groove" BorderWidth=0 BackColor="#e7f1e5">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn> </Columns>
</ASP:DATAGRID>2.这是日历窗体的代码
private void Calendar1_SelectionChanged(object sender, System.EventArgs e)
{            string strjscript = "<script language='javascript'>";
strjscript += "window.opener.document.all.txtDate.value='"+Calendar1.SelectedDate.ToString("yyyy/MM/dd")+"';";
strjscript += "window.close();</script>";
Response.Write(strjscript);
}关键在于里面的txtDate和Datagrid里面加的textbox 的name一样才可以转递日期的值
如果datagrid超过两行了就会出现多个txtDate,导致传值失败。
请教各位此项的解决办法,
如果有人告诉我是用动态生成表格然后邦定textbox,动态赋值给textbox里面的name的话
请给我详细的datagrid动态邦定textbox的代码,我会给与高分酬谢。
谢谢!
如代码很多请发到.cn

解决方案 »

  1.   

    当然不行,你先在后台定于全局的int g,int h 之类的,然后在前台中用
     <input type="text" class="TextBox" onclick="calendar()" value='<%# DataBinder.Eval(Container.DataItem, "BI_JHRKQ","{0:d}") %>' name="txtb<%=g++%>" id="txtb<%=h++%>"  />在后台中提取是也要用循环取值.
      

  2.   

    <INPUT onclick="window.open('calendar.aspx?txt_id=txtDate_<%#Eval("主键ID")%>','calendar_window','width=277,height=200');calendar_window.focus()"
    type="text" size="9"  id="txtDate_<%#Eval("主键ID")"> private void Calendar1_SelectionChanged(object sender, System.EventArgs e)
    {            string strjscript = " <script language='javascript'>";
    strjscript += "window.opener.document.getElementById('" + Request.QueryString["txt_id"].ToString() + "').value='"+Calendar1.SelectedDate.ToString("yyyy/MM/dd")+"';";
    strjscript += "window.close(); </script>";
    Response.Write(strjscript);