Obout DropDownList在添加新的时显示不正确的选择

时间:2017-05-11 05:23:18

标签: c# asp.net gridview obout

在第一页加载下,编辑模板中的下拉列表显示选择请选择值,所选值为0.但是当我更改此值时,在下一个添加新的下拉列表中显示的所选索引是上一个。它应该显示选择请为每个新项目。我已经尝试了所有可能的方法,但一切都是徒劳的。 这是我的代码。

<cc1:Grid ID="gridStaff" runat="server" FolderStyle="~/Styles/premiere_blue" Width="600px" AllowAddingRecords="true" AllowFiltering="false" CallbackMode="true" Serialize="true" AllowColumnReordering="true" AllowPaging="true" AutoGenerateColumns="false" EnableRecordHover="true" EnableTypeValidation="false" PageSize="25" OnRebind="RebindGrid" OnInsertCommand="InsertRecord" OnDeleteCommand="DeleteRecord"                   OnUpdateCommand="UpdateRecord" OnRowDataBound="gridStaff_RowDataBound" >
 <ClientSideEvents OnBeforeClientDelete="Row_Deleting" />
                    <ScrollingSettings ScrollWidth="100%" />
                    <Columns>
                          <cc1:Column DataField="SalesPerson_Id" Visible="false" ReadOnly="true"
                            HeaderText="SalesPerson ID" runat="server">
                            <TemplateSettings RowEditTemplateControlId="SalesPerson_Id" RowEditTemplateControlPropertyName="value" />
                        </cc1:Column>
                        <cc1:Column DataField="SalesPerson_ID_V3Account" HeaderText="Username" Width="20%" runat="server">
                            <TemplateSettings TemplateId="SalesPerson_V3Account" RowEditTemplateControlId="SuperForm1_SalesPerson_ID_V3Account" RowEditTemplateControlPropertyName="value" />
                        </cc1:Column>

                    </Columns>
                    <ClientSideEvents OnClientEdit="onAddEdit"  OnBeforeClientUpdate="onBeforeInsertUpdate" OnClientPopulateControls="onClientPopulateControls"
                        OnBeforeClientInsert="onBeforeInsertUpdate" OnBeforeClientCancelEdit="onBeforeClientCancelEdit" OnClientCancelEdit ="onBeforeClientCancelEdit"  />
                    <Templates>
                        <cc1:GridTemplate runat="server" ID="SalesPerson_V3Account">
                            <Template>
                                <%# GetUserNameById(Convert.ToInt32(Container.DataItem["SalesPerson_ID_V3Account"]))%>
                            </Template>
                        </cc1:GridTemplate>

                    </Templates>
                    <TemplateSettings RowEditTemplateId="tplRowEdit" />
                    <Templates>
                        <cc1:GridTemplate runat="server" ID="tplRowEdit">
                            <Template>
                                <input type="hidden" id="SalesPerson_Id" />
                                <table width="100%" class="rowEditTable">
                                    <tr>
                                        <td>
                                            <fieldset style="padding:5px; width:100%;">
                                                <legend>Sales Person Detail</legend>
                                                <table>
                                                                                                       <tr>
                                                        <td>V3 Account
                                                        </td>
                                                        <td>
                                                            <cc3:OboutDropDownList ClientIDMode="Static" runat="server" ID="SuperForm1_SalesPerson_ID_V3Account"  Width="300" Height="175"
                                                                DataSourceID="odsQCSUsers" DataTextField="username" AppendDataBoundItems="true" DataValueField="user_Id">
                                                                <asp:ListItem Text="Please Select" Value="Please Select" Selected="True"> </asp:ListItem>

                                                            </cc3:OboutDropDownList>          
                                                        </td>
                                                    </tr>

                                                                                                    </table>
                                            </fieldset>
                                        </td>
                                    </tr>                                   

                                    <tr>
                                        <td >
                                            <cc3:OboutButton runat="server" FolderStyle="~/Styles/premiere_blue/interface/OboutButton" Text="Save" OnClientClick="gridStaff.save(); return false;" ValidationGroup="1"
                                                Width="75" />
                                            <cc3:OboutButton runat="server" FolderStyle="~/Styles/premiere_blue/interface/OboutButton" Text="Cancel" OnClientClick="grid.cancel(); return false;"
                                                Width="75" />
                                        </td>
                                    </tr>
                                </table>
                            </Template>
                        </cc1:GridTemplate>
                    </Templates>
                                    </cc1:Grid>

编辑:

暂时,我通过使用 ClientSideEvents 解决了这个问题,即OnClientPopulateControls函数。 我只是在我的Gridview中添加了以下行。

<ClientSideEvents OnClientPopulateControls="onClientPopulateControls"/>

function onClientPopulateControls(record,type) {            
            if (type == "add")
            {
                record.SalesPerson_ID_V3Account = "Please Select";
                record.SalesPerson_TeamType="Please Select";           
            }           
        }

但是,仍在寻找更好,更可靠的解决方案。 谢谢!

0 个答案:

没有答案