1

ページに空白のテキストボックスのテーブルがあります。ユーザーがテキストボックスのいずれかに何かを入力した場合、その情報をオブジェクトのリストに保存します。これらはいずれも必須ではありません。いずれかの行に何かを入力した場合は、それをキャプチャします。オブジェクトは次のとおりです。

public class Siblings
{
    public string SiblingName { get; set; }
    public string SiblingSchool { get; set; }
    public string SiblingID { get; set; }
}

表は次のとおりです。

<asp:Content ID="SiblingContent" ContentPlaceHolderID="ContentPlaceHolderSibling" runat="server" >
<asp:Panel ID="SiblingInformation" runat="server" ViewStateMode="Inherit" Visible="False" >    
    <table id="SiblingTable" runat="server" > 
        <tr> 
            <td class="header">   
                <asp:Label ID="SiblingNameLabel" runat="server" Text="Sibling Full Name" ></asp:Label> 
            </td> 
            <td class="header">   
                <asp:Label ID="SiblingSchoolLabel" runat="server" Text="Sibling School"></asp:Label> 
            </td>
            <td class="header"> 
                <asp:Label ID="SiblingIDLabel" runat="server" Text="Sibling ID"></asp:Label> 
            </td>
        </tr> 
        <tr>
            <td class="field">
                <asp:TextBox ID="SiblingName1" runat="server" ></asp:TextBox>
            </td>
            <td class="field">
                <asp:TextBox ID="SiblingSchool1" runat="server" ></asp:TextBox>
            </td>
            <td class="field">
                <asp:TextBox ID="SiblingID1" runat="server" ></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td class="field">
                <asp:TextBox ID="SiblingName2" runat="server" ></asp:TextBox>
            </td>
            <td class="field">
                <asp:TextBox ID="SiblingSchool2" runat="server" ></asp:TextBox>
            </td>
            <td class="field">
                <asp:TextBox ID="SiblingID2" runat="server" ></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td class="field">
                <asp:TextBox ID="SiblingName3" runat="server" ></asp:TextBox>
            </td>
            <td class="field">
                <asp:TextBox ID="SiblingSchool3" runat="server" ></asp:TextBox>
            </td>
            <td class="field">
                <asp:TextBox ID="SiblingID3" runat="server" ></asp:TextBox>
            </td>
        </tr>
    </table>
</asp:Panel>

これが、ユーザーデータをオブジェクトリストに取り込むためのこれまでの試みです(何が起こっているのかを理解するために、一度に1ステップずつ実行する必要がありました。必要に応じて、統合してください)。

        ContentPlaceHolder mpContentPlaceHolder;
        Panel siblingPanel;
        Table siblingTable;
        TextBox tbox;
        int i = 1;
        mpContentPlaceHolder =
            (ContentPlaceHolder)Master.FindControl("ContentPlaceHolderSibling") as ContentPlaceHolder;
        if (mpContentPlaceHolder != null)
        {
            siblingPanel =
               (Panel)mpContentPlaceHolder.FindControl("SiblingInformation") as Panel;
            if (siblingPanel != null)
            {
                siblingTable =
                    (Table)siblingPanel.FindControl("SiblingTable");
                if (siblingTable != null)
                {
                    foreach (TableRow tr in siblingTable.Rows)
                    {
                        foreach (TableCell tc in tr.Cells)
                        {
                            foreach (Control c in tc.Controls)
                            {
                                if (c.GetType() == typeof(TextBox))
                                {
                                    tbox = (TextBox)c;
                                    if (!(String.IsNullOrWhiteSpace(tbox.Text)))
                                    {
                                        AllSiblings[i].SiblingName = tbox.Text;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

これが完了した後に必要なのは、兄弟オブジェクトごとのセッションです。これにより、後で別のContentPlaceholderからそれらにアクセスできます。これが名前、学校、またはIDであるかどうかを判断するのに役立つテキストボックスIDを指定しようとしましたが、それをどのように使用するかわかりません。ありがとうございました -

4

1 に答える 1

0

これを行うだけで、兄弟のリストをはるかに簡単に作成できます。

private Siblings GetSiblings(string name, string school, string id)
{
Siblings siblings = new Siblings()
  {
     Name = name,
     School = school,
     Id= id

   }

return siblings;
}


private CreateSiblingsList()
{
   List<Siblings> list = new List<Siblings>();

  // First Sibling, carry on for rest siblings
   list.Add(GetSiblings(sib1name.Text,sibling1school.Text,sib1id.Text)); 
}

N個の兄弟についても同様に行い、必要に応じてリストを使用します。コードの他の部分で必要な場合に備えて、リストをグローバルとして宣言できます。

この部分をもっと明確にしてください、実際にあなたが言いたいこと

これが完了した後に必要なのは、兄弟オブジェクトごとのセッションです。これにより、後で別のContentPlaceholderからそれらにアクセスできます。これが名前、学校、またはIDであるかどうかを判断するのに役立つテキストボックスIDを指定しようとしましたが、それをどのように使用するかわかりません。

于 2013-03-05T20:03:00.353 に答える