Сделать CRUD на Gridview через WCF - PullRequest
1 голос
/ 22 ноября 2011

Как я могу заполнить, создать, вставить, удалить в виде сетки с помощью WCF?

У меня проблема с тем, что не удается найти fieldname, но я могу получить данные.

В моем сервисном коде:

[DataContract]
    public class Pers_Horraire
    {
        [DataMember]
        string _ClientId;
        public string ClientId
        {
            get { return _ClientId; }
            set { _ClientId = value; }
        }

        [DataMember]
        string _Horraire;
        public string Horraire
        {
            get { return _Horraire; }
            set { _Horraire = value; }
        }       
    }

[OperationContract]
public IList<Pers_Horraire> Get_Horraire(string CodeCL)
    {
        try
        {
            using (var connectionWrapper = new Connexion())
            {
                var connectedConnection = connectionWrapper.GetConnected();
                //string sql_SelectAll = Outils.LoadFileToString(HttpContext.Current.Server.MapPath("~/SQL/Ordre_Selt.sql"));
                string sql_SelectAll = "SELECT CLIENT_ID,HORRAIRE FROM LS_CLIENTHORRAIRE WHERE CLIENT_ID = @CLIENT_ID";
                SqlCommand comm_SelectAll = new SqlCommand(sql_SelectAll, connectionWrapper.conn);
                comm_SelectAll.Parameters.AddWithValue("@CLIENT_ID", CodeCL);
                SqlDataReader readerOne = comm_SelectAll.ExecuteReader();

                List<Pers_Horraire> oListOrdr = new List<Pers_Horraire>();
                Pers_Horraire obj_Horr = new Pers_Horraire();
                while (readerOne.Read())
                {
                    obj_Horr.ClientId = readerOne["CLIENT_ID"].ToString();
                    obj_Horr.Horraire = readerOne["HORRAIRE"].ToString();
                    oListOrdr.Add(obj_Horr);
                }
                readerOne.Close();
                readerOne.Dispose();
                return oListOrdr;
            }
        }
        catch (Exception excThrown)
        {
            throw new Exception(excThrown.Message);
        }
    }

И я использую с сеткой:

<dx:ASPxGridView ID="ASPxGridView_Horraire" runat="server" 
                 KeyFieldName="CLIENT_ID;HORRAIRE"
                 OnRowInserting="Insrting_Horr_Obj" 
                 OnRowUpdating="Updting_Horr_Obj" 
                 OnRowDeleting="Delt_Horr_Obj" >
    <Columns>
        <dx:GridViewCommandColumn VisibleIndex="0" 
                                  ButtonType="Image">
            <DeleteButton Visible="True" 
                          Image-Url="../images/Icon/delete-icon.png">
                <Image Url="../images/Icon/delete-icon.png"></Image>
            </DeleteButton>
            <EditButton Visible="True"  
                        Image-Url="../images/Icon/page-edit-icon.png" >
                <Image Url="../images/Icon/page-edit-icon.png"></Image>
            </EditButton>
            <NewButton Visible="True" 
                       Image-Url="../images/Icon/Plus-icon.png">
                <Image Url="../images/Icon/Plus-icon.png"></Image>
            </NewButton>
            <CancelButton Image-Url="../images/Icon/Banned-icon.png">
                <Image Url="../images/Icon/Banned-icon.png"></Image>
            </CancelButton>
            <UpdateButton Image-Url="../images/Icon/Good-or-Tick-icon.png">
                <Image Url="../images/Icon/Good-or-Tick-icon.png"></Image>
            </UpdateButton>
            <ClearFilterButton Visible="True" 
                               Image-Url="../images/Icon/System-Recyclebin-Empty-icon.png" 
                               Image-ToolTip="Effacer Filtre" > 
                <Image ToolTip="Effacer 
                       Filtre" Url="../images/Icon/System-Recyclebin-Empty-icon.png"> </Image>
            </ClearFilterButton>
        </dx:GridViewCommandColumn>
        <dx:GridViewDataTextColumn FieldName="HORRAIRE" 
                                   VisibleIndex="1"  
                                   Caption="Horraire" Width="10px">
        </dx:GridViewDataTextColumn>
    </Columns>
</dx:ASPxGridView>

Код позади:

public void GetDataHorr()
{
    try
    {
        Service1Client client = new Service1Client();

        ASPxGridView_Horraire.DataSource = client.Get_Horraire(Id);  
        ASPxGridView_Horraire.DataBind();

        //just to show i get the data from WCF
        foreach (var oItem in client.Get_Horraire(Id))
        {
            ASPxLabel_err.Text += oItem + "_______";
        }
    }
    catch (Exception excThrown)
    {
        ASPxLabel_err.Text = excThrown.Message + "-->" + excThrown.InnerException;
    }
}

Проблема, которую не может найти FieldName="HORRAIRE"поэтому, если я позволю FieldName="", он покажет мне пустой столбец.

1 Ответ

1 голос
/ 22 ноября 2011

Я думаю, что вы просто возвращаете список строк - поэтому у клиента нет понятия FieldNames (страница asp).

например:

oListOrdr.Add(readerOne["HORRAIRE"].ToString());

именованное поле Horraire становится просто строкой.

Не могли бы вы изменить метод WCF, чтобы он возвращал пользовательский тип?

public IList<Horraire> Get_Horraire(string CodeCL)

где у вас есть

public class Horraire
{
   public int Client_Id {get;set;}
   public string Horraire {get;set;}
}
...