我有一个GridView各种领域,其中一个我已经用过TemplateFields,以便有一个日期选择器.我已将其设置GridView为可编辑,对于所有其他字段,此功能非常好,并且在edit按下按钮之前它们会保持锁定状态.
不幸的是,这些TemplateField留在任何时候都是可编辑的.我希望他们保持只读,直到点击"编辑".
一些代码来说明我在做什么.
Default.aspx的
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
AllowSorting="True" AutoGenerateEditButton="True"
OnPreRender="GridView1_PreRender"
CssClass="gvdatatablem, table table-striped table-bordered"
DataKeyNames="fmatter" PageSize="25">
<Columns>
<asp:TemplateField HeaderText="Letter Sent">
<ItemTemplate>
<asp:TextBox ID="udtltrsent" runat="server" ReadOnly="false" Class='datepicker' ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:CheckBoxField DataField="uheld" HeaderText="Held"
SortExpression="uheld" />
<asp:BoundField DataField="udtresponse" HeaderText="Response"
SortExpression="udtresponse" />
<asp:BoundField DataField="clname1" HeaderText="clname1"
SortExpression="clname1" readonly="true" />
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
底部的Javascript实现Datatables和Bootstrap datepicker
<script type="text/javascript">
$(document).ready(function () {
$('#example').DataTable();
$('.datepicker').datepicker();
});
</script>
Run Code Online (Sandbox Code Playgroud)
GridView1_PreRender方法也只是改变表格式,使Datatables工作
protected void GridView1_PreRender(object sender, EventArgs e)
{
if (GridView1.Rows.Count > 0)
{
//Replace the <td> with <th> and adds the scope attribute
GridView1.UseAccessibleHeader = true;
//Adds the <thead> and <tbody> elements required for DataTables to work
GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
//Adds the <tfoot> element required for DataTables to work
//GridView1.FooterRow.TableSection = TableRowSection.TableFooter;
}
Run Code Online (Sandbox Code Playgroud)
对我有用的解决方案是在ItemTemplate中使用标签和为文本框保留EditItemTemplate.编辑后,将该文本框日期标记为标签文本.
<Columns>
<asp:TemplateField HeaderText="Letter Sent">
<ItemTemplate>
<asp:Label ID="lbldate" runat="server" ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="udtltrsent" runat="server" Class='datepicker' ></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
726 次 |
| 最近记录: |