Здравствуйте, Saper, Вы писали:
S>Привет всем.
S>У меня возникла такая ситуация/вопрос. На странице есть репитер, в зависимости от условия авторизован пользователь на сайте или нет, хотелось бы в последнем столбце репитера либо ставить Label прочерк (нет прав ввода), либо, если пользователь уже авторизован, то показывать там поле ввода и кнопку, по клику которой я хотел бы ловить от него введённые значения.
S>Есть пути это реализовать ?
namespace metacomm.webcontrols
{
using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;
[PersistChildren(true), ParseChildren(false)]
public class switch_panel : PlaceHolder
{
public int shown_control_index
{
get {
Control[] cls = get_non_literal_controls( this.Controls );
for ( int i = 0; i < cls.Length; ++i )
if ( cls[i] == shown_control_ )
return i;
return -1;
}
set {
show_control( value == -1
? null
: get_non_literal_controls( this.Controls )[ value ] );
}
}
private void show_control( Control control )
{
Control[] non_literal_controls = get_non_literal_controls( this.Controls );
foreach ( Control c in non_literal_controls )
{
if ( c == control ) shown_control_ = c;
c.Visible = c == control;
}
}
private static Control[] get_non_literal_controls( ControlCollection controls )
{
ArrayList r = new ArrayList();
foreach( Control c in controls )
// They are usually just a whitespace
if ( c as LiteralControl == null )
r.Add( c );
return (Control[])r.ToArray( typeof( Control ) );
}
private Control shown_control_;
}
}
<ItemTemplate>
<my:switch_panel runat=server shown_control_index="<%#Page.User.Identity.IsAuthenticated ? 0 : 1 %>" >
<asp:Label runat=server text="----"/>
<asp:Placeholder runat=server><asp:TextBox runat=server/><asp:Button runat=server/></asp:Placeholder>
</my:switch_panel>
</ItemTemplate>
... << RSDN@Home 1.1.4 beta 6a rev. 436>>