установить значение данных поля detailsView 'программно - PullRequest
0 голосов
/ 20 сентября 2011

Я хочу установить значение (Field 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
        }
    }

Код выполняется регулярно, но если я проверяю данные в базе данных, элементне принимает значение принудительно в коде позади.Я пытался также с событием OnDataBinding, но результат тот же.Как я могу принудительно установить значение для этого поля?

1 Ответ

0 голосов
/ 05 октября 2011

Возможное решение - добавить событие OnItemInserting в источник данных моего вида сетки.Тогда я использовал этот код:

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;
    }

}
...