在第一页加载下,编辑模板中的下拉列表显示选择请选择值,所选值为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";
}
}
但是,仍在寻找更好,更可靠的解决方案。 谢谢!