簡體   English   中英

嘗試在ASP.NET中的ListView中的代碼后面的文本框中分配值

[英]Attempting to assign values to TextBoxes in code behind in ListView in ASP.NET

我試圖根據ListView中學生的用戶ID標簽值在ListView的TextBoxes中插入一個值。 在前端,每​​個列出的學生都有一個文本框,用於輸入成績。 以下是我編寫的代碼的一部分,該代碼試圖查找TextBox控件,檢索已經存在的結果並分配給與正確學生匹配的TextBox:

    <div class="col-sm-12">
        <div class="row moduleDrop">

            <h2>Final module results</h2>
            <h4>Select the degree programme:</h4>
            <asp:Label ID="degreeProgValue" runat="server"></asp:Label>
            <br />
            <asp:SqlDataSource ID="degreeSelect" runat="server" ConnectionString="<%$ ConnectionStrings:UniString %>"
                SelectCommand="SELECT pathway_years.id, (pathway_year + ' ' + pathway ) AS pathwayDetails FROM pathways INNER JOIN pathway_years ON pathways.id = pathway_years.pathway_id"></asp:SqlDataSource>
            <asp:DropDownList ID="degreeProgDropDown" runat="server" Width="420" AutoPostBack="true"
                DataSourceID="degreeSelect" DataTextField="pathwayDetails" DataValueField="id">
            </asp:DropDownList>


        </div>
    </div>

    <div class="col-sm-12">
        <div class="row moduleDrop">
            <h4>Select module:</h4>
            <asp:Label ID="TBTest" runat="server" Visible="true"></asp:Label>
            <br />

            <asp:SqlDataSource ID="modSource" runat="server" ConnectionString="<%$ ConnectionStrings:UniString %>"
                SelectCommand="SELECT DISTINCT module_on_pathway.module_id, modules.module_name FROM modules INNER JOIN module_on_pathway ON modules.id = module_on_pathway.module_id INNER JOIN pathway_years ON module_on_pathway.pathway_year_id = pathway_years.id INNER JOIN class ON pathway_years.id = class.pathway_year_id INNER JOIN classlist ON class.class_id = classlist.class_id INNER JOIN users ON classlist.user_id = users.id WHERE mandatory_module = 1 AND pathway_years.id = @pwayYearid UNION SELECT module_on_pathway.id, modules.module_name FROM modules INNER JOIN module_on_pathway ON modules.id = module_on_pathway.module_id INNER JOIN pathway_years ON module_on_pathway.pathway_year_id = pathway_years.id INNER JOIN class ON pathway_years.id = class.pathway_year_id INNER JOIN classlist ON class.class_id = classlist.class_id INNER JOIN chosen_modules_list ON classlist.classlist_id = chosen_modules_list.classlist_id INNER JOIN users ON classlist.user_id = users.id WHERE chosen_modules_list.module_on_pathway_id = module_on_pathway.id AND pathway_years.id = @pwayYearid">
                <SelectParameters>
                    <asp:ControlParameter ControlID="degreeProgDropDown" Name="pwayYearid" />
                </SelectParameters>
            </asp:SqlDataSource>
            <asp:DropDownList ID="modDropDown" runat="server" Width="420" AutoPostBack="true" EnableViewState="true"
                DataSourceID="modSource" DataTextField="module_name" DataValueField="module_id">
            </asp:DropDownList>
        </div>
        <br />
    </div>

    <div class="classList">

        <h4>Select the student:</h4>
        <br />
        <asp:SqlDataSource ID="SQLStudentList" runat="server" ConnectionString="<%$ ConnectionStrings:UniString %>"
            SelectCommand="SELECT  students_profile.user_id,  first_name, last_name FROM classlist
        INNER JOIN students_profile ON classlist.user_id = students_profile.user_id
        INNER JOIN class ON classlist.class_id = class.class_id
        INNER JOIN pathway_years ON class.pathway_year_id = @pwayYearid
        INNER JOIN module_on_pathway ON pathway_years.id = module_on_pathway.pathway_year_id
        WHERE module_on_pathway.mandatory_module = 1
        AND  module_on_pathway.module_id = @modpwayid

        UNION
        SELECT  students_profile.user_id, first_name, last_name FROM classlist
        INNER JOIN students_profile ON classlist.user_id = students_profile.user_id
        INNER JOIN class ON classlist.class_id = class.class_id
        INNER JOIN pathway_years ON class.pathway_year_id =  @pwayYearid
        INNER JOIN module_on_pathway ON pathway_years.id = module_on_pathway.pathway_year_id
        INNER JOIN chosen_modules_list ON classlist.classlist_id = chosen_modules_list.classlist_id
        WHERE chosen_modules_list.module_on_pathway_id = module_on_pathway.id 
        AND  module_on_pathway.module_id = @modpwayid">
            <SelectParameters>
                <asp:ControlParameter ControlID="degreeProgDropDown" Name="pwayYearid" />
                <asp:ControlParameter Name="modpwayid" ControlID="modDropDown" />
            </SelectParameters>
        </asp:SqlDataSource>
        <asp:ListView runat="server" OnItemDataBound="studentsListView_ItemDataBound" ID="studentsListView" DataSourceID="SQLStudentList">
            <AlternatingItemTemplate>
                <strong><span style="">Student Number:</strong>
                <asp:Label ID="user_idLabel" runat="server" Text='<%# Eval("user_id") %>' />
                <br />
                <strong>Name:</strong>
                <asp:Label ID="first_nameLabel" runat="server" Text='<%# Eval("first_name") %>' />
                <asp:Label ID="last_nameLabel" runat="server" Text='<%# Eval("last_name") %>' />
                <br />
                <asp:TextBox ID="finalMarkAssignment" runat="server" Width="40"></asp:TextBox>
                <asp:Label ID="gradeForStudent" runat="server" Visible="false"></asp:Label>
                <br />
                <br />
                <asp:Button CssClass="btn btn-success" ID="submitModuleMark" OnClientClick="ShowLabel();" runat="server" Text="Submit Grade" OnClick="submitModuleMark_Click" />
                <br />

                <asp:Button CssClass="btn btn-success" ID="repeatSubmitModuleMark" OnClientClick="ShowLabel();" runat="server" Text="Submit repeat module grade" OnClick="repeatSubmitModuleMark_Click" />
                <br />
                <br />
                </span>
            </AlternatingItemTemplate>
            <EditItemTemplate>
                <span style="">user_id:
                    <asp:TextBox ID="user_idTextBox" runat="server" Text='<%# Bind("user_id") %>' />
                    <br />
                    first_name:
                    <asp:TextBox ID="first_nameTextBox" runat="server" Text='<%# Bind("first_name") %>' />
                    <br />
                    last_name:
                    <asp:TextBox ID="last_nameTextBox" runat="server" Text='<%# Bind("last_name") %>' />
                    <br />
                    <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="Update" />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" />
                    <br />
                    <br />
                </span>
            </EditItemTemplate>
            <EmptyDataTemplate>
                <span>No data was returned.</span>
            </EmptyDataTemplate>
            <InsertItemTemplate>
                <span style="">user_id:
                    <asp:TextBox ID="user_idTextBox" runat="server" Text='<%# Bind("user_id") %>' />
                    <br />
                    first_name:
                    <asp:TextBox ID="first_nameTextBox" runat="server" Text='<%# Bind("first_name") %>' />
                    <br />
                    last_name:
                    <asp:TextBox ID="last_nameTextBox" runat="server" Text='<%# Bind("last_name") %>' />
                    <br />
                    <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
                    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" />
                    <br />
                    <br />
                </span>
            </InsertItemTemplate>
            <ItemTemplate>
                <span style="">
                    <strong>Student Number:</strong>
                    <asp:Label ID="user_idLabel" runat="server" Text='<%# Eval("user_id") %>' />
                    <br />
                    <strong>Name:</strong>
                    <asp:Label ID="first_nameLabel" runat="server" Text='<%# Eval("first_name") %>' />
                    <asp:Label ID="last_nameLabel" runat="server" Text='<%# Eval("last_name") %>' />
                    <br />
                    <asp:TextBox ID="finalMarkAssignment" runat="server" Width="40"></asp:TextBox>
                    <br />
                    <br />
                    <asp:Button CssClass="btn btn-success" ID="submitModuleMark" OnClientClick="ShowLabel();" runat="server" Text="Submit Grade" OnClick="submitModuleMark_Click" />
                    <br />

                    <asp:Button CssClass="btn btn-success" ID="repeatSubmitModuleMark" OnClientClick="ShowLabel();" runat="server" Text="Submit repeat module grade" OnClick="repeatSubmitModuleMark_Click" />
                    <br />
                    <br />
                </span>
            </ItemTemplate>
            <LayoutTemplate>
                <div id="itemPlaceholderContainer" runat="server" style="">
                    <span runat="server" id="itemPlaceholder" />
                </div>
                <div style="">
                </div>
            </LayoutTemplate>
            <SelectedItemTemplate>
                <span style="">user_id:
                    <asp:Label ID="user_idLabel" runat="server" Text='<%# Eval("user_id") %>' />
                    <br />
                    first_name:
                    <asp:Label ID="first_nameLabel" runat="server" Text='<%# Eval("first_name") %>' />
                    <br />
                    last_name:
                    <asp:Label ID="last_nameLabel" runat="server" Text='<%# Eval("last_name") %>' />
                    <br />
                    <br />
                </span>
            </SelectedItemTemplate>
        </asp:ListView>


    </div>


    <div class="col-sm-12">

        <br />

        <asp:Label ID="changedFlag" runat="server" Visible="false"></asp:Label>
        <asp:Label ID="assignmentIDValue" runat="server" Visible="false"></asp:Label>
        <asp:Label ID="pOrF" runat="server" Visible="false"></asp:Label>
        <asp:Label ID="EnterFinalMark" runat="server" Visible="false">Enter a final mark for this module</asp:Label>
        <br />


        <asp:Label ID="success" runat="server" Visible="false" Text="Grade has been changed successfully"></asp:Label>
        <asp:Label ID="changedVAL" Visible="false" runat="server"></asp:Label>
    </div>
</div>

當您在TextBox TB上放置一個斷點時,進入該斷點時是否有一個值?

我懷疑您沒有將這段代碼放在可以為listview項進行數據綁定的方法中,因此您需要這樣做。 如果將其放在其他位置(例如在頁面加載時),它將無法找到各個文本框。

首先,您需要在頁面加載代碼中訂閱ListView的ItemDataBound事件。 您可以在前端代碼中聲明性地執行此操作

<asp:ListView ID="studentsListView" OnItemDataBound="listView_OnItemDataBound" runat="server"></asp:ListView>

或者您可以在后端代碼的頁面加載中完成此操作

studentsListView.ItemDataBound += listView_OnItemDataBound();

然后,對於每個項目,您都可以對其進行處理

protected void listView_OnItemDataBound(object sender, ListViewItemEventArgs e)
{
   // get the button or any other control on the current row
   TextBox tB = (TextBox) e.Item.FindControl("finalMarkAssignment");
   if(tb != null)
  {
    // do something
  }
}

暫無
暫無

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

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