2009-11-17 5 views
1

Когда я пишу такой код:О DetailsView

<asp:DetailsView ID="DetailsView1" Runat="server" DataSourceID="Vote" DefaultMode="Insert" 
      AutoGenerateRows="False" DataKeyNames="id" Width="352px" Height="50px" 
      HorizontalAlign="Left" > 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:RadioButton ID="RadioButtonVote" runat="server" Text="111" 
          GroupName="A" /><br/> 
         <asp:RadioButton ID="RadioButtonName" runat="server" Text="222" 
          GroupName="A"/> 
        </ItemTemplate> 
       </asp:TemplateField> 
    <asp:CommandField CancelText="取消" InsertText="添加" ShowInsertButton="True" ShowCancelButton="False"></asp:CommandField> 
</asp:DetailsView> 

А потом в .aspx.cs:

private string Home 
{ 
    get 
    { 
     if (Request.QueryString["home"] != null) 
     { 
      return Request.QueryString["home"].ToString(); 
     } 
     return "1"; 
    } 
} 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     BindDatailsView(); 
    } 
} 
private void BindDatailsView() 
{ 
    RadioButton radioButtonVote = this.DetailsView1.FindControl("RadioButtonVote") as RadioButton; 
    RadioButton radioButtonName = this.DetailsView1.FindControl("RadioButtonName") as RadioButton; 
    if (Home.Equals("1")) 
    { 
     radioButtonName.Visible = true; 
     radioButtonVote.Visible = true; 
    } 
    else if (Home.Equals("2")) 
    { 
     radioButtonVote.Visible = true; 
     radioButtonName.Visible = false; 
    } 
} 

Когда Home является '2', я добавляю кнопку для вставки, оба из видны радиоклубы. Почему?

+0

ли отлажена это вы? Попробуйте установить точки останова после обоих операторов if. Возможно, в какой-то момент Home меняет статус –

ответ

1

вам нужно использовать DetailsView DataBound событие, а вы делаете на странице загрузки, попробуйте этот код ... он будет работать определенно

protected void DetailsView1_DataBound(object sender, EventArgs e) 
{ 
    if (DetailsView1.CurrentMode == DetailsViewMode.Insert) 
    { 
     RadioButton radioButtonVote = this.DetailsView1.FindControl("RadioButtonVote") as RadioButton; 
     RadioButton radioButtonName = this.DetailsView1.FindControl("RadioButtonName") as RadioButton; 
     if (Home.Equals("1")) 
     { 
      radioButtonName.Visible = true; radioButtonVote.Visible = true; 
     } 
     else if (Home.Equals("2")) 
     { 
      radioButtonVote.Visible = true; radioButtonName.Visible = false; 
     } 
    } 
} 
+0

Большое спасибо – user189594