2011-09-20 12 views
0

詳細ビューの[挿入]ボタンをクリックすると、値(フィールドIDCommerciale)を設定します。 OnItemInsertingを使用して値を変更しようとしましたが、何も起こりません。 これは、ASPXのコードです:詳細ビューのデータ値をプログラムで設定します

<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px" DefaultMode="Insert" 
       AutoGenerateRows="False" DataKeyNames="IDPianificazione" 
       DataSourceID="EntityDataSourceDetailsView" OnItemInserting="insertingmodeevent" 
       > 
       <Fields> 
        <asp:TemplateField HeaderText="IDCommerciale" 
         SortExpression="IDCommerciale"> 
         <ItemTemplate> 
          <asp:Label ID="Label1" runat="server" Text='<%# Bind("Commerciali.Nome") %>'></asp:Label> 
         </ItemTemplate> 
         <InsertItemTemplate> 
         <asp:DropDownList ID="ddlIDCommerciale" runat="server" SelectedValue='<%# Bind("IDCommerciale") %>' 
          DataSourceID="EntityDataSource1" DataTextField="Nome" 
          DataValueField='IDCommerciale'>       
         </asp:DropDownList> 
         </InsertItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="IDCLiente" SortExpression="IDCLiente"> 
         <ItemTemplate> 
          <asp:Label ID="Label2" runat="server" Text='<%# Bind("IDCLiente") %>'></asp:Label> 
         </ItemTemplate> 
         <InsertItemTemplate> 
          <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("IDCLiente") %>'></asp:TextBox> 
         </InsertItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="IDCategoria" SortExpression="IDCategoria"> 
         <ItemTemplate> 
          <asp:Label ID="Label3" runat="server" Text='<%# Bind("IDCategoria") %>'></asp:Label> 
         </ItemTemplate> 
         <InsertItemTemplate> 
          <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("IDCategoria") %>'></asp:TextBox> 
         </InsertItemTemplate> 
        </asp:TemplateField> 
        <asp:BoundField DataField="Oggetto" HeaderText="Oggetto" 
         SortExpression="Oggetto" /> 
        <asp:BoundField DataField="datainizio" HeaderText="datainizio" 
         SortExpression="datainizio" /> 
        <asp:BoundField DataField="DataPresuntaFine" HeaderText="DataPresuntaFine" 
         SortExpression="DataPresuntaFine" /> 
        <asp:BoundField DataField="DataCompletamento" HeaderText="DataCompletamento" 
         SortExpression="DataCompletamento" /> 
        <asp:CommandField 
         ShowInsertButton="True" /> 
       </Fields> 
      </asp:DetailsView> 




      <asp:EntityDataSource ID="EntityDataSourceDetailsView" runat="server" 
       ConnectionString="name=SalesPortalEntities" Include="Categorie,Commerciali,Clienti" 
       DefaultContainerName="SalesPortalEntities" EnableDelete="True" 
       EnableFlattening="False" EnableInsert="True" EnableUpdate="True" 
       EntitySetName="PianificazioneIncontri"> 
      </asp:EntityDataSource> 

     <asp:EntityDataSource ID="EntityDataSource1" runat="server" 
      ConnectionString="name=SalesPortalEntities" 
      DefaultContainerName="SalesPortalEntities" EnableFlattening="False" 
      EntitySetName="Commerciali"> 
     </asp:EntityDataSource> 

が、これは背後にあるコードです:

protected void insertingmodeevent(object sender, EventArgs e) 
    { 
     string gruppoAdmin = System.Web.Security.FormsAuthentication.Decrypt(Request.Cookies[1].Value).UserData; 
     if (gruppoAdmin.Contains("SPGAdmins")) 
     { 
      try 
      { 
      DropDownList dd = new DropDownList(); 
      dd = DetailsView1.FindControl("ddlIDCommerciale") as DropDownList; 
      dd.SelectedIndex = 1; 
      dd.SelectedValue = "1"; 
      } 
      catch (Exception) 
      { 

       new Exception(); 
      } 


     } 
     else 
     { 
      // other code 
     } 
    } 

コードがexecude定期的にですが、私は、データベース上のデータをチェックすると、アイテムのdoes'entコードの背後に強制的に値を取る。イベントOnDataBindingも試しましたが、結果は同じです。 このフィールドの値を強制するにはどうすればよいですか?

答えて

0

可能な解決策は、イベントonItemInsertingをmy gridviewのentitydatasourceに追加することです。次に、このコードを使用しました:

protected void UpdateDataSource(object sender, EntityDataSourceChangingEventArgs e) 
{ 
    if (!gruppoAdmin.Contains("SPGAdmins")) 
    { 
     SalesPortalModel.PianificazioneIncontri pianificazione = e.Entity as SalesPortalModel.PianificazioneIncontri; 
     int idCommerciale = (from a in entity.Commerciali where a.Nome == Context.User.Identity.Name select a.IDCommerciale).First(); 
     pianificazione.IDCommerciale = idCommerciale; 
     detailsView1.Rows[1].Visible = false; 
    } 

} 
関連する問題