Вам необходимо создать нестатическое поле, которое вы будете приписывать каждому экземпляру
class K{
static int instancesCount;
// Or "static AtomicInteger instancesCount;" if you do multithreading
final int nth_instance; // this is your non-static field
K(){
instancesCount++;
this.nth_instance = instancesCount;
// In case of multithreading, replace both lines by
// this.nth_instance = instancesCount.incrementAndGet();
}
public static void main(String[] args){
K k1 = new K(); //k1.nth_instance == 1;
K k2 = new K(); //k1.nth_instance == 2;
}
}
Не забывайте, что .aspx страницей является просто XML. Вы просто выходите из кавычек, как Вы обычно были бы.
Например:
<asp:Repeater ID="repeatTheLabel" runat="server">
<ItemTemplate>
<asp:Label ID="Label1" Text="<%# Eval("Id", "This is item '{0}'.") %>" runat="server" />
</ItemTemplate>
<SeparatorTemplate>
<br />
</SeparatorTemplate>
</asp:Repeater>
Когда вышеупомянутое выражение связано с данными значение между <%#
и %>
становится:
Eval("Id", "This is item '{0}'.")
... который производит на странице HTML, как произведено при привязке данных с массивом объектов с "идентификационными" значениями свойств от 1 до 5:
Это - объект '1'.
Это - объект '2'.
Это - объект '3'.
Это - объект '4'.
Это - объект '5'.
Сохраните свои запросы SQL в свойствах в Вашем классе Page. Мало того, что это работает :-) но и это делает Ваш код легче считать и поддержать.
О, и необходимо использовать параметры в запросах вместо того, чтобы делать строковые замены. Это решит проблему путем устранения необходимости одинарных кавычек.
Почему Вы не определяете этот оператор Where как константу в Вашем codebehind. Определите:
protected const string SELECTCLAUSE =
"SELECT Blah FROM TableName WHERE (StringField = '{0}')";
Затем Ваше свойство SelectCommand было бы:
SelectCommand='<%# Eval("Bar", SELECTCLAUSE ) %>'
Вы попытались выйти из символов одинарной кавычки?
... WHERE (StringField = \'{0}\') ...