我有一个包含两个(2)ASPxComboBox的gridview,第二个Combo框的值基于第一个组合框的值。 DevExpress演示和示例有点复杂和耗时,所以我想到一个解决方法,当组合框的选定项目交换时,值将存储在标签中。我将获得标签的值以存储在下拉列表中。但我不知道如何在服务器端传递label的值。任何帮助将非常感激。谢谢!
这是我的代码。
前端
<asp:Label ID="LblProduct" runat="server" Text="Label"></asp:Label>
<dx:ASPxGridView ID="ASPxGridView2" OnRowDataBound="ASPxGridView2_RowDataBound" ClientInstanceName="GridV" runat="server" AutoGenerateColumns="False" DataSourceID="forprod" KeyFieldName = "ppdtl_no">
<columns>
<dx:GridViewDataTextColumn FieldName="fld_product" Name="Dd_product" ShowInCustomizationForm="true" VisibleIndex="3">
<SettingsHeaderFilter>
<DateRangePickerSettings EditFormatString="" />
</SettingsHeaderFilter>
<EditItemTemplate>
<dx:ASPxComboBox ID="ASPxComboBoxProduct" runat="server" DataSourceID="pp_prod" TextField="pp_ppname" ValueField="pp_ppcode">
<ClientSideEvents SelectedIndexChanged="function(s, e) { OnProductChanged(s); }"></ClientSideEvents>
</dx:ASPxComboBox>
</EditItemTemplate>
</dx:GridViewDataTextColumn>
<dx:GridViewDataComboBoxColumn FieldName="fld_type" Name="dd_type" ShowInCustomizationForm="true" VisibleIndex="4">
<SettingsHeaderFilter>
<DateRangePickerSettings EditFormatString="" />
</SettingsHeaderFilter>
<EditItemTemplate>
<dx:ASPxComboBox ID="ASPxComboBoxType" runat="server" DataSourceID="pp_type" TextField="pp_codetype" ValueField="pp_codetype">
</dx:ASPxComboBox>
</EditItemTemplate>
</dx:GridViewDataComboBoxColumn>
</columns>
</ASPxGridView>
的JavaScript
function OnProductChanged(s, e) {
var selected_index = s.lastSuccessValue;
var aa = document.getElementById('LblProduct').innerText = selected_index;
}
onload = OnProductChanged;
答案 0 :(得分:0)
您需要在选择器中使用在服务器级别运行的任何元素的ClientID属性。为此,您必须使用标签在文件中编写JavaScript,然后使用<%= LblProduct.ClientID %>
。
<script type="text/javascript">
document.getElementById('<%= LblProduct.ClientID %>');
</script>
在运行期间使用Inspect查看您的项目 - 您将在编译后看到ID LblProduct
,但类似于ProjectName_PageName_ContentPlaceHolderName_LblProduct
。
您也可以复制粘贴,但不能更改。