设置项目限制以在ajaxToolkit ComboBox中显示或在asp.net

时间:2015-04-25 06:35:39

标签: c# asp.net gridview combobox updatepanel

我在gridview中有一个ajaxtoolkit组合框,它工作得很好,但问题是当我点击下拉按钮时列表与页面重叠,所以我想限制每个滚动显示10个项目的数量。下一个问题是当我尝试向页面添加更新面板时,它会破坏组合框的渲染。我怎么解决这个问题?提前致谢

这是我在gridview中组合框的代码

      <asp:GridView CssClass="pad" ID="dgvOrder" runat="server" BorderStyle="Double" AutoGenerateColumns="False" OnRowDataBound="dgvOrder_RowDataBound" OnRowDeleting="dgvOrder_RowDeleting" HorizontalAlign="Center" >
        <Columns>
        <asp:TemplateField HeaderText="No." AccessibleHeaderText="No.">
                    <ItemTemplate>
                        <%# Container.DataItemIndex + 1 %>
                    </ItemTemplate>
                </asp:TemplateField>
            <asp:TemplateField HeaderText ="Description" AccessibleHeaderText="Description">
                           <ItemTemplate >
                            <ajaxToolkit:ComboBox ID="ddlItems" AutoPostBack="True" AppendDataBoundItems="True" onmouseover="this.size=4;" onmouseout="this.size=1;" DataTextField="item_desc" DataValueField="item_id"  runat="server" AutoCompleteMode="Suggest" ItemInsertLocation="Prepend" OnSelectedIndexChanged="ddlItems_SelectedIndexChanged" DropDownStyle="DropDown" BorderStyle="Double" ></ajaxToolkit:ComboBox> <br />
                             <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Please pick an item" ControlToValidate="ddlItems"></asp:RequiredFieldValidator> 
                           </ItemTemplate>
                           </asp:TemplateField>
            <asp:TemplateField AccessibleHeaderText="Inventory Code" HeaderText="Inventory Code">
                <ItemTemplate>
                 <asp:Label ID="lblInvCode" runat="server" Text=""></asp:Label>
                    </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField AccessibleHeaderText="Qty" HeaderText="Qty">
                <ItemTemplate>
             <asp:TextBox ID="txtQty" runat="server" OnTextChanged="txtQty_TextChanged" AutoPostBack="True" onkeyup ="ValidateText(this);"></asp:TextBox><br />       
             <asp:RequiredFieldValidator ID="RequiredFieldValidator23" runat="server" ErrorMessage="Please input qty" ControlToValidate="txtQty"></asp:RequiredFieldValidator> 
                </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField AccessibleHeaderText="UOM" HeaderText="UOM">
                <ItemTemplate>
                    <asp:Label ID="lblUOM" runat="server" Text=""></asp:Label>
                    </ItemTemplate>
            </asp:TemplateField>
             <asp:TemplateField AccessibleHeaderText="SOQ" HeaderText="SOQ">
                <ItemTemplate>
                    <asp:Label ID="lblSOQ" runat="server" Text=""></asp:Label>
                    </ItemTemplate>
            </asp:TemplateField>
              <asp:TemplateField AccessibleHeaderText="Reason" HeaderText="Reason">
                <ItemTemplate>
                    <asp:TextBox ID="txtReason" runat="server" Enabled="False"></asp:TextBox>
                    </ItemTemplate>
            </asp:TemplateField>
            <asp:CommandField ShowDeleteButton="True" />

            </Columns>
    </asp:GridView> 

这是我的updatepanel代码

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>

</ContentTemplate>
    <Triggers>
  (whole page inside)
    <asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
    <asp:AsyncPostBackTrigger ControlID="txtIdNo" EventName="TextChanged" />
    </Triggers>
    </asp:UpdatePanel>

1 个答案:

答案 0 :(得分:0)

长项目列表/多输入控件

ComboBox列表中的所有项目都将呈现给它所在的网页。另一方面,AutoCompleteExtender在呈现页面后从其ServiceMethod中检索项目。当您的ComboBox包含相当长的项目列表时,或者当您在同一页面上(或在同一个UpdatePanel中)有相对大量的ComboBox时,加载时间可能会显着减慢。当ComboBox由于必须向浏览器呈现的标记量而执行缓慢时,可以使用AutoCompleteExtender来提高性能。

<ajaxToolkit:ComboBox ID="ComboBox1" runat="server" 
DropDownStyle="DropDown" 
AutoCompleteMode="None"
CaseSensitive="false"
RenderMode="Inline"
ItemInsertLocation="Append"
ListItemHoverCssClass="ComboBoxListItemHover"
  <asp:ListItem>...</asp:ListIem>
  ...

有关详细信息,请参阅此link