标签:javascript asp-net gridview textbox readonly
我在网格视图的每一行都有一个日期文本框.由于不允许用户在文本框中放置自己的值,因此我们将属性设置为ReadOnly =“true”.并提供了一个日历java脚本插件,用于设置Textbox值.现在,当我尝试在保存单击时访问日期文本框时,文本框值不会保留.
我也知道这个问题和解决方案.我们需要在服务器端设置readonly属性来解决此问题.但我最关心的是,我已将Textbox放在Grid视图的Template字段中.所以我需要循环遍历Grid视图的每一行,然后获取日期Textbox的引用,然后将readonly属性设置为readonly.看起来很麻烦.任何人都可以建议其他替代方案或解决方法.
代码如下
<asp:GridView ID="gv_sample" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<asp:TextBox runat="server" ID="txtByWhen" ReadOnly="true" CssClass="inputbox" Text='<%#Eval("ByWhen") %>'></asp:TextBox>
</td>
<td style="padding-left: 2px;">
<img src="../Images/dateico.gif" alt="Select a date" title="Select a date"
onclick="JavaScript:return showCalendar('<%#((GridViewRow)Container).FindControl("txtByWhen").ClientID %>','dd/mm/y');" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
解决方法:
你是对的,解决方案是在Codebehind中设置属性. (见this question)
您不必遍历GridView,只需在RowCreated-Event中执行:
protected void Page_Load(object sender, EventArgs e)
{
gv_sample.RowCreated += new GridViewRowEventHandler(gv_sample_RowCreated);
}
void gv_sample_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox txtByWhen = (TextBox)e.Row.FindControl("txtByWhen");
txtByWhen.Attributes.Add("readonly", "readonly");
}
}
标签:javascript,asp-net,gridview,textbox,readonly 来源: https://codeday.me/bug/20191009/1876900.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。