簡體   English   中英

頁面加載后使用Javascript創建ASP.NET標簽

[英]Creating ASP.NET labels with Javascript after page has loaded

我編寫了一個腳本,該腳本根據通過隱藏字段傳遞的服務器端變量動態創建html表。 理想情況下,我想向可以填充服務器端的每個單元格添加一個.NET標簽和單選按鈕控件。 我意識到,.NET控件都是在首次編譯頁面時創建的,但是以后有沒有添加它們的方法呢? 這是我建立表的代碼:

        <script>
        $(document).ready(function () {
            var satShifts = $('#mainContent_hidSat').val();
            var sunShifts = $('#mainContent_hidSun').val();
            var monShifts = $('#mainContent_hidMon').val();
            var tueShifts = $('#mainContent_hidTue').val();
            var wedShifts = $('#mainContent_hidWed').val();
            var thuShifts = $('#mainContent_hidThu').val();
            var friShifts = $('#mainContent_hidFri').val();

            var c = 0;

            for (var i = 0; i < satShifts; i++) {
                $('#tblSat').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
                c++;
            }
            for (var i = 0; i < sunShifts; i++) {
                $('#tblSun').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
                c++;
            }
            for (var i = 0; i < monShifts; i++) {
                $('#tblMon').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
                c++;
            }
            for (var i = 0; i < tueShifts; i++) {
                $('#tblTue').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
                c++;
            }
            for (var i = 0; i < wedShifts; i++) {
                $('#tblWed').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
                c++;
            }
            for (var i = 0; i < thuShifts; i++) {
                $('#tblThu').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
                c++;
            }
            for (var i = 0; i < friShifts; i++) {
                $('#tblFri').append('<tr><td class="individualShift">Shift: ' + ***LABEL & RAD here*** + '</td></tr>');
                c++;
            }
        });
    </script>

加載頁面后,您不能將它們添加為.NET控件。 這是設計使然。

但是,您可以將它們添加為HTML元素,然后使用Request.Form["textboxName"]在后台代碼中訪問它們的值。

然后,您可以將文本框的name值設置為您想要在代碼隱藏中檢索它們的值(在這種情況下,它將為name="textboxName" )。

或者,您可以使用服務器端變量從后端將它們呈現為ASP.NET控件。 如果這是您要采取的路線,我將進一步詳細說明。

更新 :您要使用javascript進行的所有操作都可以通過Repeaters完成。

對於后端的每一天,添加一個如下所示的轉發器:

<asp:Repeater ID="rptSaturdayShifts" runat="server">
   <ItemTemplate>
      <tr><td class="individualShift">Shift: <asp:Label id="lblYourLabel" runat="server" Text='<%# Eval("LabelContent") %>' /> <asp:RadioButton id="rbYourRadioButton" runat="server" /></td></tr>
   </ItemTemplate>
</asp:Repeater>

您只需將中繼器與具有“ LabelContent”屬性的集合進行數據綁定,瞧,您的數據將被呈現。 現在,保存時,您必須遍歷所有轉發器行。 因此,在“保存”按鈕上,單擊:

foreach (var item in rptSaturdayShifts.Items) 
{
   var yourRadioButton = (Label) item.FindControl("rbYourRadioButton");

   // You can then access it using...
   var radioButtonValue = yourRadioButton.SelectedValue;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM