2010-02-05 47 views
0

我有一個包含嵌套gridview的中繼器。現在我需要能夠在轉發器中的標籤中檢索數值綁定,並將其用作gridview的輸入參數。使用Repeater Control作爲嵌套GridView的命令參數

以下是一些代碼,希望能讓您更好地瞭解我正在嘗試做什麼。

enter code here 

    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="RepeaterDS" OnItemDataBound="Repeater1_SendRollNumber"> 
       <HeaderTemplate> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <table style="width: 615px;" id="Table1"> 
         <tr> 
          <td> 
           <b>Roll #:</b> 
           <asp:Label runat="server" ID="RollIDLabel" Text='<%# Eval("RollID") %>' /> 
           <asp:Label runat="server" ID="RollIDLabelCode" Text='<%# Eval("RollID") %>' Visible="false" /> 
          </td> 
         </tr> 
         <tr> 
          <td> 
           <b>Address:</b> 
           <asp:Label runat="server" ID="AddressLabel" Text='<%# Eval("Address") %>' /> 
        </table> 
        <asp:Label ID="Label1" runat="server"><b>Parties:</b></asp:Label> 
        <asp:GridView ID="GridView3" runat="server" BackColor="White" BorderColor="#DEDFDE" 
         BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical" 
         AllowPaging="True" Width="620px" DataSourceID="AssessmentDetailsFromRollIDDS" 
         EmptyDataText="None Associated" AutoGenerateColumns="False" ShowFooter="true"> 
                 <asp:TemplateField HeaderText="Property Assessment" HeaderStyle-Font-Bold="true" 
           FooterStyle-BackColor="White"> 
           <ItemTemplate> 
            <asp:Label ID="PropAssessType" runat="server" Width="90%" Text='<%# Eval("PropertyAssessmentType") %>'></asp:Label> 
            <asp:Label ID="PropAssessDsc" runat="server" Text='<%# Eval("PropertyAssessmentDesc") %>'></asp:Label> 
           </ItemTemplate> 
           <FooterTemplate> 
           </FooterTemplate> 
          </asp:TemplateField> 

         <RowStyle BackColor="#F7F7DE" /> 
         <FooterStyle BackColor="#CCCC99" /> 
         <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
         <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
         <HeaderStyle BackColor="#3E4E4E" Font-Bold="True" ForeColor="White" /> 
         <AlternatingRowStyle BackColor="White" /> 
        </asp:GridView> 
       </ItemTemplate> 
      </asp:Repeater> 

    <asp:ObjectDataSource ID="RepeaterDS" runat="server" OldValuesParameterFormatString="original_{0}" 
     SelectMethod="GetRollNumberbyAppealID" TypeName="BusinessLayer.BSO.Roll_AssessmentDetailsBSO"> 
     <SelectParameters> 
      <asp:QueryStringParameter Name="AppealID" QueryStringField="appealID" Type="Int32" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 

    <asp:ObjectDataSource ID="AssessmentDetailsFromRollIDDS" runat="server" OldValuesParameterFormatString="original_{0}" 
     SelectMethod="GetAssessDetailsFromRollID" OnSelecting="AssessmentDetailsFromRollIDDS_Selecting" TypeName="BusinessLayer.BSO.Assessment_DetailsBSO"> 
     <SelectParameters> 
      <asp:ControlParameter Name="RollID" ControlID="RollIDLabelCode" Type="String" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 

我試圖削減了儘可能多的代碼,同時儘可能留在問題的勇氣,所以我基本上要它位於一箇中繼器也被輸入到我的gridview的標籤控制RollIDLabelCode 。問題是我不斷收到錯誤,例如找不到控制器的RollIDLabelCode。我聽說有一個錯誤,你需要指定所有的命名容器。我試過沒有運氣。

我嘗試過的另一條路線是在後面的代碼中執行此操作。

enter code here 


    public void Repeater1_OnItemDataBound(Object Sender, RepeaterItemEventArgs e) 
    { 
        // Execute the following logic for Items and Alternating Items. 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      string test = ((Label)e.Item.FindControl("RollIDLabel")).Text; 
     } 
    } 

    public void AssessmentDetailsFromRollIDDS_OnSelecting(object sender, ObjectDataSourceSelectingEventArgs e) 
    { 

     e.InputParameters["RollID"] = "Need the Info here"; 
    } 

這些函數在數據綁定的中繼器和objectdatasource onselecting函數上被調用。這些工作分開很好。我只需要知道如何從Repeater1_OnItemDataBound函數中的字符串測試中的信息獲取OnSelecting函數中的e.InputParameters [「RollID」]。

希望有人知道如何做到這一點。我是.net編程新手。我感謝任何幫助。

謝謝!

回答

0

將RollIDLabelCode標籤設置爲visible = false,這意味着它在呈現時不會存在,因此試圖訪問該值將不可能。您需要使用隱藏的其他控件,但在呈現時存在。例如,一個GridView有一個存在於控件中的數據鍵,但沒有被渲染。例如,它用於檢索行的關鍵值以檢索更多數據。

+0

這不幸的不是我的問題。我可以將其設置爲可見並且仍然存在錯誤。如果我將標籤從中繼器中取出,該頁面將至少加載。但是,它與中繼器內部鏈接,我得到以下錯誤。 在ControlParameter'RollID'中找不到控件'RollIDLabelCode'。 – Dave 2010-02-06 00:09:06