2011-11-10 65 views
0

所以我有一個使用對象數據源(Web服務)來設置表格的GridView。表格現在出現了,表格末尾有一個編輯選項。我想要做的是當用戶點擊編輯選項時,該行會出現一個下拉框,其中包含從webservice獲得的可用選項。截至目前表格正確加載,並從對象數據源中提取數據。然而,問題在於,當你點擊編輯按鈕時,在包含一個保管箱的列中以及在保管箱內出現的是連接到組合框的數據源的路徑。假定存在該源對象的Textvalue,並且選中該項的用途時,將從數據源獲得所選項唯一標識符。下面你會發現我到目前爲止所嘗試的:如何在gridview中的編輯模板中成功填充組合框? asp.net

<asp:GridView ID="GridViewHolder" 
         runat="server" 
         AutoGenerateColumns="False" 
         BorderColor="Black" 
         BorderStyle="Ridge" 
         BorderWidth="2px" 
         DataSourceID="MachineDataSet" 
         ForeColor="DarkBlue" 
         HeaderStyle-HorizontalAlign="Center" 
         HorizontalAlign="Center"        
         RowStyle-HorizontalAlign="Center" > 
      <RowStyle HorizontalAlign="Center" /> 
      <Columns> 
       <asp:BoundField DataField="SiteName" 
           HeaderText="Site Name" 
           SortExpression="SiteName" /> 
       <asp:BoundField DataField="Name" 
           HeaderText="Machine Name" 
           SortExpression="Name" /> 
       <asp:TemplateField HeaderText="Machine Type" 
            SortExpression="MachineType"> 
        <EditItemTemplate> 
         <telerik:RadComboBox ID="Machine_Type" 
               runat="server" 
               EmptyMessage="Select a Machine Type." 
               EnableLoadOnDemand="true" 
               DataSourceID="GetMachineType" 
               EnableVirtualScrolling="true"> 
         </telerik:RadComboBox>        
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="Label1" runat="server" Text='<%# Bind("MachineType") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Machine Model" SortExpression="MachineModel"> 
        <EditItemTemplate> 
         <telerik:RadComboBox ID="Machine_Model" 
               runat="server" 
               EmptyMessage="Select a Machine Model." 
               EnableLoadOnDemand="true" 
               DataSourceID="GetMachineModel" 
               EnableVirtualScrolling="true"> 
         </telerik:RadComboBox> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="Label2" runat="server" Text='<%# Bind("MachineModel") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:CommandField ButtonType="Button" ShowEditButton="True" /> 
      </Columns> 
      <HeaderStyle HorizontalAlign="Center" /> 
     </asp:GridView> 

這是我目前使用的網格。

<asp:ObjectDataSource ID="MachineDataSet" 
           runat="server" 
           SelectMethod="GetMachineSiteDetails"         
           TypeName="Datamart.UI.Reporting.Web.FilteredReportInputsSvc.FilteredReportInputsService"> 
      <SelectParameters> 
       <asp:Parameter DefaultValue="" 
           Name="siteid" 
           Type="String" /> 
      </SelectParameters> 
     </asp:ObjectDataSource>    
     <asp:ObjectDataSource ID="GetMachineType" 
           runat="server" 
           SelectMethod="GetMachineTypeList" 
           TypeName="Datamart.UI.Reporting.Web.FilteredReportInputsSvc.FilteredReportInputsService"> 
      <SelectParameters> 
       <asp:Parameter Name="siteid" Type="String" /> 
      </SelectParameters> 
     </asp:ObjectDataSource> 
     <asp:ObjectDataSource ID="GetMachineModel" 
           runat="server" 
           SelectMethod="GetMachineModelList" 
           TypeName="Datamart.UI.Reporting.Web.FilteredReportInputsSvc.FilteredReportInputsService"> 
      <SelectParameters> 
       <asp:Parameter Name="siteid" Type="String" /> 
      </SelectParameters> 
     </asp:ObjectDataSource> 

這些是我目前使用的對象數據源。

現在我的問題出現在edittemplates中,而我認爲問題在於dropbox實際上獲取了正確的數據,但它無法正確顯示。 我想知道的是,我怎樣才能得到它,所以當你點擊編輯時,Dropbox會出現在網格的可編輯列中,當它們被點擊以顯示可用選項時,它會出現可選項目,以及這不是在數據源的每個選項:

Datamart.UI.Reporting.Web.FilteredReportInputsSvc.FilteredReportInputsService

任何幫助或建議,不勝感激。

謝謝。

回答

0

好了之後,這個我想通過一個常規的asp:dropdownlist來解決這個問題。

這是現在我在的.ascx頁面中使用的代碼:

   <asp:GridView ID="GridViewHolder" 
         runat="server" 
         AutoGenerateColumns="False" 
         BorderColor="Black" 
         BorderStyle="Ridge" 
         BorderWidth="2px" 
         DataSourceID="MachineDataSet" 
         ForeColor="DarkBlue" 
         HeaderStyle-HorizontalAlign="Center" 
         HorizontalAlign="Center"        
         RowStyle-HorizontalAlign="Center" 
         AllowPaging="True">       
      <RowStyle HorizontalAlign="Center" /> 
      <Columns> 
       <asp:BoundField DataField="SiteName" 
           HeaderText="SiteName" 
           SortExpression="SiteName" 
           ReadOnly="True" /> 
       <asp:BoundField DataField="Name" 
           HeaderText="Machine Name" 
           SortExpression="Name" 
           ReadOnly="True" /> 
       <asp:TemplateField HeaderText="Machine Type" 
            SortExpression="MachineType"> 
        <EditItemTemplate> 
         <asp:ObjectDataSource ID="GetMachineType" 
               runat="server" 
               SelectMethod="GetMachineTypeList" 
               TypeName="Datamart.UI.Reporting.Web.FilteredReportInputsSvc.FilteredReportInputsService" 
               UpdateMethod="UpdateMachineTypes"> 
          <UpdateParameters> 
           <asp:Parameter Name="machineId" Type="Int32" /> 
           <asp:Parameter Name="machineType" Type="String" /> 
          </UpdateParameters> 
          <SelectParameters> 
           <asp:Parameter Name="siteid" Type="String" /> 
          </SelectParameters> 
         </asp:ObjectDataSource> 
         <asp:DropDownList ID="Machine_Type" 
              runat="server" 
              DataSourceID="GetMachineType" 
              DataTextField="Name" 
              DataValueField="ID" 
              Height="17px" 
              Width="181px"> 
           <asp:ListItem Selected="True" 
              Text="Select a Machine Type."> 
           </asp:ListItem> 
         </asp:DropDownList> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="Label1" runat="server" Text='<%# Bind("MachineType") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Machine Model" SortExpression="MachineModel"> 
        <EditItemTemplate> 
         <asp:ObjectDataSource ID="GetMachineModel" 
               runat="server" 
               SelectMethod="GetMachineModelList" 
               TypeName="Datamart.UI.Reporting.Web.FilteredReportInputsSvc.FilteredReportInputsService" 
               UpdateMethod="UpdateMachineModels"> 
          <UpdateParameters> 
           <asp:Parameter Name="machineId" Type="Int32" /> 
           <asp:Parameter Name="machineModel" Type="String" /> 
          </UpdateParameters> 
          <SelectParameters> 
           <asp:Parameter Name="siteid" Type="String" /> 
          </SelectParameters> 
         </asp:ObjectDataSource> 
         <asp:DropDownList ID="Machine_Model" 
              runat="server" 
              DataSourceID="GetMachineModel" 
              DataTextField="Name" 
              DataValueField="ID" 
              Width="181px" 
              Height="17px"> 
           <asp:ListItem Selected="True" 
              Text="Select a Machine Model."> 
           </asp:ListItem> 
         </asp:DropDownList> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <asp:Label ID="Label2" runat="server" Text='<%# Bind("MachineModel") %>'></asp:Label> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:CommandField ButtonType="Button" ShowEditButton="True" ShowHeader="True" /> 
      </Columns> 
      <HeaderStyle HorizontalAlign="Center" /> 
     </asp:GridView> 
     <asp:ObjectDataSource ID="MachineDataSet" 
           runat="server" 
           SelectMethod="GetMachineSiteDetails"         
           TypeName="Datamart.UI.Reporting.Web.FilteredReportInputsSvc.FilteredReportInputsService"> 
      <SelectParameters> 
       <asp:Parameter DefaultValue="" 
           Name="siteid" 
           Type="String" /> 
      </SelectParameters> 
     </asp:ObjectDataSource> 

如果您發現任何錯誤或有關於這個設計評論,隨意評論對我仍然很新的有工作asp.net和任何建議都非常有幫助!