2016-11-11 43 views
1

我有一個內置dropdownlist的中繼器。中繼器外還有另一個單獨的下拉列表。用戶將在這個ddl中選擇一個值,點擊一個按鈕,並且所選擇的值將被填充在中繼器內的所有ddl中,這些ddl是空白的。注意:ddl的文本爲selectedvalue(而不是ints)。中繼器內的dropdownlist的設置值

不幸的是我的代碼不起作用。

我的標記:

<asp:Repeater ID="AttendanceRepeater" runat="server" DataSourceID="AttendanceSqlDataSource" OnItemDataBound="AttendanceRepeater_ItemDataBound"> 
 
       <ItemTemplate> 
 
        <br /> 
 
        <table> 
 
         <tr> 
 
          <td style="width: 50px"></td> 
 
          <td style="width: 300px"> 
 
           <asp:Label ID="StudentNameLabel" runat="server" Text='<%# Eval("STUDENT_NAME") %>'></asp:Label> 
 
          </td> 
 
          <td style="width: 200px"> 
 
           <asp:DropDownList ID="AttendStatusDropDownList" runat="server" 
 
            SelectedValue='<%# Eval("ATTENDANCE_STATUS") %>'> 
 
            <asp:ListItem Value="" Text=""></asp:ListItem> 
 
            <asp:ListItem Value="ABSENTE" Text="Absent Excused"></asp:ListItem> 
 
            <asp:ListItem Value="ABSENTU" Text="Absent Unexcused"></asp:ListItem> 
 
            <asp:ListItem Value="CIN" Text="Chk In No (Absent)"></asp:ListItem> 
 
            <asp:ListItem Value="CIY" Text="Chk In Yes (Present)"></asp:ListItem> 
 
            <asp:ListItem Value="NR" Text="Attend Not Reqd"></asp:ListItem> 
 
            <asp:ListItem Value="PRESENT" Text="Present"></asp:ListItem> 
 
            <asp:ListItem Value="TM005" Text="Time Missed 005 Min"></asp:ListItem> 
 
            <asp:ListItem Value="TM010" Text="Time Missed 010 Min"></asp:ListItem> 
 
            <asp:ListItem Value="TM015" Text="Time Missed 015 Min"></asp:ListItem> 
 
            <asp:ListItem Value="TM030" Text="Time Missed 030 Min"></asp:ListItem> 
 
            <asp:ListItem Value="TM045" Text="Time Missed 045 Min"></asp:ListItem> 
 
            <asp:ListItem Value="TM060" Text="Time Missed 1hr"></asp:ListItem> 
 
            <asp:ListItem Value="TM075" Text="Time Missed 1hr 15mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM090" Text="Time Missed 1hr 30mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM105" Text="Time Missed 1hr 45mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM120" Text="Time Missed 2hr"></asp:ListItem> 
 
            <asp:ListItem Value="TM135" Text="Time Missed 2hr 15mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM150" Text="Time Missed 2hr 30mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM165" Text="Time Missed 2hr 45mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM180" Text="Time Missed 3hr"></asp:ListItem> 
 
            <asp:ListItem Value="TM195" Text="Time Missed 3hr 15mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM210" Text="Time Missed 3hr 30mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM225" Text="Time Missed 3hr 45mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM240" Text="Time Missed 4hr"></asp:ListItem> 
 
            <asp:ListItem Value="TM255" Text="Time Missed 4hr 15mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM310" Text="Time Missed 4hr 30mi"></asp:ListItem> 
 
            <asp:ListItem Value="TM325" Text="Time Missed 4hr 45mi"></asp:ListItem> 
 
            <asp:ListItem Value="WD" Text="Withdrawn"></asp:ListItem> 
 
           </asp:DropDownList> 
 
           <asp:RequiredFieldValidator ID="AttendStatusValidator" runat="server" 
 
            ErrorMessage="Required field" ControlToValidate="AttendStatusDropDownList"> 
 
           </asp:RequiredFieldValidator> 
 
          </td> 
 
          <td style="width: 200px"> 
 
           <asp:TextBox ID="CommentsTextBox" runat="server" TextMode="MultiLine" 
 
            Text='<%# Eval("COMMENTS") %>'></asp:TextBox> 
 
          </td> 
 
          <td> 
 
<%--        <asp:CheckBox ID="ChangeCheckBox" runat="server" Visible="true" />--%> 
 
           <asp:Label ID="PeopleCodeIdLabel" runat="server" Visible="false" Text='<%# Eval("PEOPLE_CODE_ID") %>'></asp:Label> 
 
           <asp:Label ID="AcademicYearLabel" runat="server" Visible="false" Text='<%# Eval("ACADEMIC_YEAR") %>'></asp:Label> 
 
           <asp:Label ID="AcademicTermLabel" runat="server" Visible="false" Text='<%# Eval("ACADEMIC_TERM") %>'></asp:Label> 
 
           <asp:Label ID="AcademicSessionLabel" runat="server" Visible="false" Text='<%# Eval("ACADEMIC_SESSION") %>'></asp:Label> 
 
           <asp:Label ID="EventIdLabel" runat="server" Visible="false" Text='<%# Eval("EVENT_ID") %>'></asp:Label> 
 
           <asp:Label ID="EventSubTypeLabel" runat="server" Visible="false" Text='<%# Eval("EVENT_SUB_TYPE") %>'></asp:Label> 
 
           <asp:Label ID="SectionLabel" runat="server" Visible="false" Text='<%# Eval("SECTION") %>'></asp:Label> 
 
           <asp:Label ID="TranAttendanceIdLabel" runat="server" Visible="false" Text='<%# Eval("TranAttendanceId") %>'></asp:Label> 
 
          </td> 
 
         </tr> 
 
        </table> 
 
        <br /> 
 
       </ItemTemplate> 
 
      </asp:Repeater>

代碼按鈕(注意下拉列表的AttendanceStatusdropdownlist和AttendStatusAllDropDownList命名。)

protected void ApplyToAllButton_Click(object sender, EventArgs e) 
{ 
    string defaultStatus = AttendStatusAllDropDownList.SelectedValue; 

    foreach (RepeaterItem item in AttendanceRepeater.Items) 
    { 
     DropDownList ddl = (DropDownList)item.FindControl("AttendanceStatusDropDownList"); 
     if (string.IsNullOrWhiteSpace(ddl.SelectedValue)) 
     { 
      //set the ddl to the value selected from the other ddl 
      ddl.SelectedValue = defaultStatus; 

     } 
    } 
    //Save changes to all 
    SaveButton_Click(null, null); 
} 

的值不在中繼器內部的下拉菜單中填充。我搜索谷歌,但無法找到任何具體的東西,我試圖。任何幫助將非常感激。

在此先感謝。 皮特

回答

1

。在你的FindControl值和差異直放站內的DropDownList的ID

中繼器:AttendStatusDropDownList

的FindControl:AttendanceStatusDropDownList

請參見下面的更新代碼段。

protected void ApplyToAllButton_Click(object sender, EventArgs e) 
{ 
    foreach (RepeaterItem item in AttendanceRepeater.Items) 
    { 
     DropDownList ddl = (DropDownList)item.FindControl("AttendStatusDropDownList"); 

     if (ddl != null && string.IsNullOrEmpty(ddl.SelectedValue)) 
     { 
      ddl.SelectedValue = AttendStatusAllDropDownList.SelectedValue; 
     } 
    }  
} 

ASPX頁面

<asp:DropDownList ID="AttendStatusAllDropDownList" runat="server"> 
    <asp:ListItem Value="" Text=""></asp:ListItem> 
    <asp:ListItem Value="TM005" Text="Time Missed 005 Min"></asp:ListItem> 
    <asp:ListItem Value="TM010" Text="Time Missed 010 Min"></asp:ListItem> 
    <asp:ListItem Value="TM015" Text="Time Missed 015 Min"></asp:ListItem> 
    <asp:ListItem Value="TM030" Text="Time Missed 030 Min"></asp:ListItem> 
    <asp:ListItem Value="TM045" Text="Time Missed 045 Min"></asp:ListItem> 
</asp:DropDownList> 
<br /> 
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="ApplyToAllButton_Click" CausesValidation="false" /> 
<br /> 
<br /> 
<asp:Repeater ID="AttendanceRepeater" runat="server"> 
    <ItemTemplate> 
     <asp:DropDownList ID="AttendStatusDropDownList" runat="server"> 
      <asp:ListItem Value="" Text=""></asp:ListItem> 
      <asp:ListItem Value="TM005" Text="Time Missed 005 Min"></asp:ListItem> 
      <asp:ListItem Value="TM010" Text="Time Missed 010 Min"></asp:ListItem> 
      <asp:ListItem Value="TM015" Text="Time Missed 015 Min"></asp:ListItem> 
      <asp:ListItem Value="TM030" Text="Time Missed 030 Min"></asp:ListItem> 
      <asp:ListItem Value="TM045" Text="Time Missed 045 Min"></asp:ListItem> 
     </asp:DropDownList><br /> 
    </ItemTemplate> 
</asp:Repeater> 
+0

我一定要記得檢查的小東西!謝謝,但是在我改變它之後,它仍然不起作用。有一件事要注意:我需要確保在我完成作業之前,參加ststususdropdownlist.selectedvalue爲null。所以我稍微更改了代碼。 –

+0

我已經添加了我的測試代碼片段。如果我改變'AttendStatusAllDropDownList'並按下按鈕,則Repeater中的所有值都會更新,而且沒有選擇。因此,如果您的代碼段無效,請嘗試將我的代碼段放在其他頁面上,然後開始添加內容,以便查看問題所在。 – VDWWD

+0

我發現了這個問題。我在中繼器的下拉菜單中有一個必需的字段驗證器。我試圖刪除它,並且ddl現在被填充(它工作)。但該領域是必需的。我想我會嘗試使用自定義驗證器,看看它是否仍然有效。 –