我在ASP.NET
中使用以下代码作为日期选择字段。
<asp:TemplateField ItemStyle-Width="10%" HeaderText="Date of Birth">
<EditItemTemplate>
<br />
<asp:TextBox ID="text_master_dateedit" runat="server" Text='<%# Bind("MemberDOB", "{0:dd/MM/yyyy}") %>' Width="60%" CssClass="textfoot" ValidationGroup="editing" MaxLength="10" onkeypress="return false;" onkeyup="return false;" oncontextmenu="return false;" onpaste="return false;"></asp:TextBox>
<a href="javascript:NewCssCal('<%=text_master_dateedit.ClientID %>','DDMMYYYY')"><img id="Img1" alt="Pick a Date" src="Images/cal.png" width="25" height="25" style="vertical-align:middle;" /></a><br />
<asp:RequiredFieldValidator ID="requireddateedit" runat="server" ValidationGroup="editing" ForeColor="Red" Font-Bold="false" ControlToValidate="text_master_dateedit" ErrorMessage="Date required">*Required</asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="label_master_dateview" runat="server" Text='<%# Bind("MemberDOB", "{0:dd/MM/yyyy}") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<br />
<asp:TextBox ID="text_master_datenew" runat="server" Text='<%# Bind("MemberDOB", "{0:dd/MM/yyyy}") %>' Width="60%" CssClass="textfoot" ValidationGroup="adding" MaxLength="10" onkeypress="return false;" onkeyup="return false;" oncontextmenu="return false;" onpaste="return false;"></asp:TextBox>
<a href="javascript:NewCssCal('<%=text_master_datenew.ClientID %>','DDMMYYYY')"><img id="Img1" alt="Pick a Date" src="Images/cal.png" width="25" height="25" style="vertical-align:middle;" /></a><br />
<asp:RequiredFieldValidator ID="requireddatenew" runat="server" ValidationGroup="adding" ForeColor="White" Font-Bold="false" ControlToValidate="text_master_datenew" ErrorMessage="Date required">*Required</asp:RequiredFieldValidator>
</FooterTemplate>
</asp:TemplateField>
我在GridView
中的文字字段和日期链接为TemplateField
。当我运行代码时,我收到以下错误。
Compiler Error Message: CS0103: The name 'text_master_dateedit' does not exist in the current context
但同样的事情在GridView
之外。如何解决GridView
中标识文本字段ID的问题?我不想使用正常的DatePicker
,因为我在所有项目中使用此代码。使用相同代码的任何解决方案都能使其工作吗?
NewCssCal
函数是JavaScript
代码,用于我所有项目中的日期选择字段。它适用于除GridView
内部以外的所有情况。
修改
我也尝试使用ClientIDMode="Static"
但仍然无效。
在C#中我使用下面的代码来访问日期字段的值,因为当文本字段在GridView
内时我无法直接访问它。 这有效。
protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = (GridViewRow)gv.Rows[e.RowIndex];
string date = ((TextBox)row.Cells[0].FindControl("text_master_dateedit")).Text;
}
是否也有类似的方法来访问此行中的文本字段?我想让这条线路起作用。有没有办法访问文本字段text_master_dateedit
的ID(gridview中的文本字段)而不是'<%=text_master_dateedit.ClientID %>'
?
这不起作用。
<a href="javascript:NewCssCal('<%=text_master_dateedit.ClientID %>','DDMMYYYY')"><img id="Img1" alt="Pick a Date" src="Images/cal.png" width="25" height="25" style="vertical-align:middle;" /></a>
页面加载
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (Session["USER"] != null)
{
if (!Page.IsPostBack)
{
Tab1.CssClass = "Clicked";
MainView.ActiveViewIndex = 0;
}
}
else
{
Response.Redirect("LoginPage.aspx");
}
}
catch
{
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Error Occured: Try Again!')", true);
}
}
在页面加载中我只选择Tab1
这是aspx页面的第一个选项卡。我在页面中总共有三个GridView
和三个标签。我正在使用<asp:MultiView>
答案 0 :(得分:1)
您的代码显示:
string date = ((文本框)row.Cells [0] .FindControl(&#34; text_master_dateedit&#34))。文本;
"foo{mywildcard}bar"
这里是什么?
你可以试试这个:
row
对于客户端,您可以找到文本框的客户端ID,如下所示:
TextBox dateTxt = (TextBox)GridViewID.Rows[CellIndex].FindControl("text_master_dateedit");
string dateString = dateTxt.Text;
希望这有帮助!