weixin_33749131 2012-07-26 15:27 采纳率: 0%
浏览 36

GridView中的日历预渲染

 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" 
    BorderStyle="None" BorderWidth="1px" CellPadding="4" 
    DataSourceID="SqlDataSource1" ForeColor="Black" GridLines="Horizontal" 
    Width="900px">
    <Columns>
        <asp:TemplateField HeaderText="Date" SortExpression="Date">
            <EditItemTemplate>
                <asp:TextBox ID="txtStartDate" runat="server" Text='<%# Bind("Date") %>'></asp:TextBox>
                <asp:CalendarExtender
                                ID="CalendarExtender1"
                                onprerender="AjaxCalendar_PreRender" 
                                runat="server"
                                TargetControlID="txtStartDate"
                                Format="dd/MM/yyyy"  />

            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                ErrorMessage="Date is required" Font-Italic="True" Font-Size="Small" 
                ForeColor="Red" ControlToValidate="txtStartDate"></asp:RequiredFieldValidator>


            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("Date") %>'></asp:Label>
            </ItemTemplate>
            <HeaderStyle HorizontalAlign="Left" />
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Time" SortExpression="Start_Time">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Start_Time") %>'></asp:TextBox>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("Start_Time") %>'></asp:Label>
            </ItemTemplate>
            <HeaderStyle HorizontalAlign="Left" />
        </asp:TemplateField>

        <asp:CommandField ShowEditButton="True">
        <ItemStyle ForeColor="#003366" />
        </asp:CommandField>
    </Columns>
</asp:GridView>

I want to set the calendar with certain range of date.

protected void AjaxCalendar_PreRender(object sender, EventArgs e)
{
    DateTime startDate = DateTime.Now.AddDays(1);
    DateTime endDate = DateTime.Now.AddDays(60);
    CalendarExtender ce = (CalendarExtender)GridView1.FindControl("CalendarExtender1");
    ce.StartDate = startDate;
    ce.EndDate = endDate;
}

This is what I do, but I got Object reference not set to an instance of an object. Is it the GridView FindControl caused the error?

  • 写回答

1条回答 默认 最新

  • weixin_33736048 2012-08-06 20:30
    关注

    You need to move that logic to the rowcreated event: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcreated

    Remember what you got on a gridview is a bunch of items, not a single control. Those items are grouped by templates, some of them are:

    • ItemTemplate
    • EditItemTemplate
    • InsertItemTemplate

    And you do not have the extender for all the templates, since it is not necessary. That is why this will not work:

    CalendarExtender ce = (CalendarExtender)GridView1.FindControl("CalendarExtender1");
    

    Since the actual CalendarExtender1 does not exist inside the gridview, but inside of each item, that can have multiple templates.

    Hope I am explaining myself and you can finish that.

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办