1

リピーターを使用してアレイを書き出すにはどうすればよいですか?

string[,] month = { {"Januari", "Februari", "Mars", "Apri", "Maj", "Juni", "Juli", "Agusti", "September", "November", "Oktober", "December"},
                    {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"}
                  };

これでContainer.DataItemを使用できますが、ある場所で最初の文字列を取得し、別の場所で2番目の文字列を取得するにはどうすればよいですか?

<a href="Default.aspx?m=01">Januari</a>
4

6 に答える 6

4

この場合、列挙型を使用する必要があるようです...つまり...


enum Month = {January=1, February, March};

Month month = Month.January;
Month alsomonth = (Month)(1); // Should work

于 2009-06-15T19:42:10.103 に答える
2

配列の配列をデータソースとして使用することは可能ですが(2次元配列は使用できません)、各内部配列に名前と番号が含まれるように、逆に配置する必要があります。

私はもっ​​とOOPアプローチを好みますが、それはもう少し構造を与え、リピーターコードはずっときれいになります:

月情報のクラスを作成します。

public class MonthInfo {

   public string Name { get; private set; }
   public string Number { get; private set; }

   public MonthInfo(string name, string number) {
      Name = name;
      Number = number;
   }

}

これで、リピーターのデータソースとして使用するオブジェクトの配列を作成できます。

MonthInfo[] months = {
   new MonthInfo("Januari", "01"),
   new MonthInfo("Februari", "02"),
   new MonthInfo("Mars", "03"),
   new MonthInfo("April", "04"), // inte "Apri" ;)
   new MonthInfo("Maj", "05"),
   new MonthInfo("Juni", "06"),
   new MonthInfo("Juli", "07"),
   new MonthInfo("Augusti", "08"), // inte "Agusti" ;)
   new MonthInfo("September", "09"),
   new MonthInfo("Oktober", "10"), // kommer före november ;)
   new MonthInfo("November", "11"),
   new MonthInfo("December", "12")
};

MonthRepeater.DataSource = months;

リピーターでは、月情報クラスのプロパティを使用します。

<asp:Repeater runat="server" id="MonthRepeater">
   <ItemTemplate>
      <a href="Default.aspx?m=<%#Eval("Number")>"%><%#Eval("Name")%></a>
   </ItemTemplate>
</asp:Repeater">
于 2009-06-15T19:59:15.483 に答える
1

2つの別々のアレイを使用することをお勧めします...

string[] month = {"Januari", "Februari"} // blah blah

string[] day = {"01", "02" } // blah blah 

実際の日付で作業していますか、それともこれは単なる例ですか?ジャヌアリ???

于 2009-06-15T19:42:11.337 に答える
1

これは、クラスなどを作成する必要がないグローバル化されたバージョンです。

protected void Page_Load(object sender, EventArgs e) {
     this.Culture = "sv-SE";
     var monthNames = System.Globalization.DateTimeFormatInfo.CurrentInfo.MonthNames.ToList();
     this.MonthRepeater.DataSource = from month in monthNames
                                select new {
                                    Number = monthNames.IndexOf(month) + 1,
                                    Name = month
                                };
     this.MonthRepeater.DataBind();

}

ASPX:

<asp:Repeater runat="server" id="MonthRepeater">       
   <ItemTemplate>
      <a href="Default.aspx?m<%#Eval("Number")%>"><%#Eval("Name")%></a> 
   </ItemTemplate>
</asp:Repeater> 
于 2009-06-16T00:13:36.597 に答える
0

辞書(非常に便利な初期化構文があります)または列挙型の使用を検討してください。

于 2009-06-15T19:45:16.277 に答える
0

列挙型を実際に数か月間使用している場合は、列挙型を作成することをお勧めします。<%# (int)Container.DataItem %>次に、名前と番号に<%#((MonthsEnum)Container.DataItem).ToString()%>を使用できます。

于 2009-06-15T19:47:02.417 に答える