Gridview 中的日历扩展控件导致不必要的回发

calendar extender controls in Gridview causes unnecessary postback

在下面的代码中,如果我在 Gridview 中使用日历扩展控件和文本框,我会收到不必要的 post 回复。这意味着在下面的代码中,当运行 UpdateEmployeeInAppForm 时被调用了两次。在 Gridview 之外它工作正常。任何人都可以帮助我吗?

<asp:GridView ID="gvEmployee" runat="server" AutoGenerateColumns="false" ItemType="Employee">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <table> <tr>
                                <td>Date Of Birth</td>
                                <td colspan="3">
                                    <asp:TextBox ID="tbDOB" runat="server" OnTextChanged="UpdateEmployeeInAppForm" AutoPostBack="true" Text='<%# Item.DOB%>'></asp:TextBox>

                                    <asp:CalendarExtender ID="tbDOB_CalendarExtender" runat="server" Format="dd MMMM yyyy" SelectedDate='<%# Item.DOB%>'
                                        Enabled="True" TargetControlID="tbDOB" ></asp:CalendarExtender>
                                </td>
                            </tr>
</table>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

这是我找到的解决方案:

                              <asp:TextBox ID="tbDOB" runat="server" OnTextChanged="UpdateEmployeeInAppForm"  AutoPostBack="true" 
                                        Text='<%#Item.DOB.HasValue ? Item.DOB.Value.Date.ToString("dd MMMM yyyy") : "" %>'></asp:TextBox>                                        
                                    <asp:CalendarExtender ID="tbDOB_CalendarExtender" runat="server"   Format="dd MMMM yyyy"                                           
                                        Enabled="True" TargetControlID="tbDOB" ></asp:CalendarExtender>

从日历扩展控件中删除 SelectedDate='<%# Item.DOB%>' 并使文本框和日历中的格式相同。