我已經看到很多問題接近這個,但還沒有找到我的答案。下面是我下面的例子中的關鍵點:在radgrid中綁定radcombobox的首選方法是什麼?
- radgrid控件具有GridTemplateColumn
- GridTemplateColumn有一個radcombobox控件在它的EditItemTemplate中
- radcombobox控件綁定到一個ObjectDataSource並有一個RequiredFieldValidator
- 的SelectedValue =」 <% #Bind(「SomeValue」)%>'似乎可行但會導致驗證問題
- 設置ItemDataBound事件中的RadComboBox1.SelectedValue似乎正在工作
是否與ItemDataBound中的代碼綁定是最好的方法?有趣的是,在aspx頁面上設置SelectedValue ='<%#Bind(「SomeValue」)%>'具有SelectedValue,當我獲得ItemDataBound時已經設置了它,但由於某種原因,編輯模式下的RequiredFieldValidator在執行此操作時失敗除非我在ItemDataBound中設置了AGAIN的值。以下是我的代碼的簡化版本。
<telerik:RadGrid ID="rgTasks" runat="server" AllowAutomaticInserts="false" AllowAutomaticUpdates="false" AutoGenerateColumns="False">
<MasterTableView DataKeyNames="Id">
<CommandItemSettings ShowRefreshButton="False"></CommandItemSettings>
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"></telerik:GridEditCommandColumn>
<telerik:GridBoundColumn DataField="Id" ReadOnly="True" UniqueName="Id" DataType="System.Int32" Visible="false"></telerik:GridBoundColumn>
<telerik:GridTemplateColumn UniqueName="TaskTypeId" HeaderText="Task" DataField="TaskTypeId" DefaultInsertValue="">
<ItemTemplate>
<%# Eval("TaskType.Name")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadComboBox ID="rcbTaskTypeId" runat="server" EmptyMessage="Select TaskType..."
DataSourceID="odsTaskTypes" DataValueField="Id" DataTextField="Name" SelectedValue='<%#Bind("TaskTypeId")%>'>
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfvTaskTypeId" runat="server" ControlToValidate="rcbTaskTypeId" ErrorMessage="Task Type is required" Display="Dynamic"></asp:RequiredFieldValidator>
</EditItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<asp:ObjectDataSource ID="odsTaskTypes" runat="server" SelectMethod="GetTaskTypes" TypeName="CAPAModel.CAPARepo.DataRepo"></asp:ObjectDataSource>
Protected Sub rgTasks_ItemDataBound(sender As Object, e As GridItemEventArgs) Handles rgTasks.ItemDataBound
If ((TypeOf e.Item Is GridEditableItem) AndAlso e.Item.IsInEditMode) Then
If Not String.IsNullOrEmpty(DataBinder.Eval(e.Item.DataItem, "TaskTypeId").ToString) Then
Dim rcbTaskTypeId As RadComboBox = e.Item.FindControl("rcbTaskTypeId")
rcbTaskTypeId.SelectedValue = DataBinder.Eval(e.Item.DataItem, "TaskTypeId")
End If
End If
End Sub
我看到一些相關的問題,但我正在尋找一個解釋,我應該如何做到這一點,爲什麼。謝謝。
感謝迴應,Saritha。我應該更清楚,並編輯了我的問題。上面的代碼功能正常。但是,如果我不重置ItemDataBound中的RadComboBox1.SelectedValue,那麼RequiredFieldValidator將不正確地觸發,除非更改RadComboBox中的值。奇怪的是,當我重置SelectedValue時,它實際上已經在那裏了。 –