Table des matières

RadComboBox

Events

protected void RadComboBox1_PreRender(object sender, EventArgs e) {}
protected void RadComboBox1_ItemDataBound(object source, RadComboBoxItemEventArgs e) {}
protected void RadComboBox1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) {}

Liste déroulante avec crochets

Définir un modèle d'item (<ItemTemplate>) dans le RadComboBox :

<ItemTemplate>
    <div>
         <asp:CheckBox ID="cbChecked" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Description") %>' />
    </div>
</ItemTemplate> 

Appliquer une source de données qui a une colonne pour :

/// <summary>
/// Applique les crochets aux boites à cocher lorsque indiqué.
/// </summary>
protected void comboBox1_ItemDataBound(object sender, RadComboBoxItemEventArgs e)
{
    RadComboBoxItem comboItem = (RadComboBoxItem)e.Item;
    CheckBox chkbx = (CheckBox)comboItem.FindControl("cbChecked");
    chkbx.Checked = bool.Parse(DataBinder.Eval(e.Item.DataItem, "chk").ToString());
}

RadGrid

Code ASPX de base

   <telerik:RadGrid ID="radGrid" runat="server" GridLines="None" OnNeedDataSource="radGrid_NeedDataSource" AutoGenerateColumns="false"
        OnItemCreated="radGrid_ItemCreated" OnInsertCommand="radGrid_InsertCommand"
        OnDeleteCommand="radGrid_DeleteCommand" OnUpdateCommand="radGrid_UpdateCommand">
        <MasterTableView DataKeyNames="IdEnregistrement,IdSubColumn" AllowMultiColumnSorting="True" Width="50%" EditMode="InPlace" CommandItemDisplay="Top" InsertItemDisplay="Bottom">
        <CommandItemSettings AddNewRecordText="Ajouter un enregistrement" RefreshText="Rafraîchir" />
 
            <Columns>
                <telerik:GridTemplateColumn UniqueName="Row1" HeaderText="Row1" ItemStyle-Width="150px" >
                    <ItemTemplate>
                        <%#DataBinder.Eval(Container.DataItem, "Row1")%>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:Label ID="lblRow1" runat="server" Text="Label"></asp:Label>
 
                        <telerik:RadComboBox ID="cbxRow1" runat="server" Width="150px" ></telerik:RadComboBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
 
                <telerik:GridCheckBoxColumn
                     UniqueName="Row2" HeaderText="Row2"
                     DataField="indic_Row2" ItemStyle-Width="40px">
                </telerik:GridCheckBoxColumn> 
 
                <telerik:GridTemplateColumn UniqueName="Row3" HeaderText="Row3" ItemStyle-Width="100px">
                    <ItemTemplate>
                        <%#DataBinder.Eval(Container.DataItem, "Row3")%>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadTextBox ID="tbxRow3" runat="server" Width="75px" MaxLength="6">
                        </telerik:RadTextBox>
                    </EditItemTemplate>      
                </telerik:GridTemplateColumn>
 
                <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn" HeaderStyle-Width="45px"
                    EditText="Éditer" CancelText="Annuler" UpdateText="Confirmer" InsertText="Insérer"  >
                    <ItemStyle CssClass="MyImageButton" />
                </telerik:GridEditCommandColumn>                    
 
                <telerik:GridButtonColumn ConfirmText="Supprimer cet enregistrement ?" ConfirmDialogType="RadWindow"  HeaderStyle-Width="25px" 
                    ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" Text="Supprimer"
                    UniqueName="DeleteColumn">
                    <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
                </telerik:GridButtonColumn>
            </Columns>
            <NoRecordsTemplate>Aucun enregistrement à afficher.</NoRecordsTemplate>
        </MasterTableView>
        <ClientSettings>
            <ClientEvents OnRowDblClick="RowDblClick" />
        </ClientSettings>
    </telerik:RadGrid>

Events

protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e) {}
protected void RadGrid1_ItemEvent(object sender, GridItemEventArgs e) {}
protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) {}
protected void RadGrid1_UpdateCommand(object source, GridCommandEventArgs e) {}
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e) {}

Ajouter un bouton d'édition

<telerik:GridEditCommandColumn EditText="Editer"></telerik:GridEditCommandColumn>

Ajouter un lien avec données plus Id

 <telerik:GridTemplateColumn>  
    <ItemTemplate>  
      <asp:HyperLink runat="server" ID="HyperLink1" Text='<%# Eval("FullName") %>'
      NavigateUrl='<%# "edit.aspx?id=" + Eval("Id") %>' ></asp:HyperLink>  
    </ItemTemplate>  
</telerik:GridTemplateColumn>

Exemple de méthode ItemCreated

protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
{
    if (e.Item.ItemType == GridItemType.EditItem && e.Item.ItemType == GridItemType.Item)
    {
        GridDataItem item = (GridDataItem) e.Item;
        int currentId = Convert.ToInt32(item.KeyValues.Substring(10,1));
        RadComboBox cbxRoles = (RadComboBox)item.FindControl("RadComboBox1");
    }
}

Exemple de méthode NeedDataSource

protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    CustomDataContext db = new CustomDataContext();
 
    var query = from em in bd.Employees
                select new
                {
                    em.FirstName,
                    em.LastName
                };
    RadGrid1.DataSource = query;
}

Ne pas oublier d'ajouter la référence using Telerik.Web.UI;.

Accès au contrôle de l'item

CheckBox checkbox = editedItem["nom_du_checkbox"].Controls[0];

Accès aux boutons Insert, Update, Cancel

Voici un exemple d'utilisation dans la méthode ItemCreated() de la grille.

GridDataInsertItem editForm = (GridDataInsertItem)e.Item;
ImageButton insertButton = (ImageButton)editForm.FindControl("PerformInsertButton");
ImageButton updateButton = (ImageButton)editForm.FindControl("UpdateButton");
insertButton.Visible = false;
e.Canceled = true;
e.Item.FireCommandEvent("Cancel", e);

Quand les boutons sont plutôt des liens :

LinkButton cancelButton = (LinkButton)e.Item.FindControl("CancelButton");

Modifications de texte

Boutons de commande

<MasterTableView DataKeyNames="IdAcces" AllowMultiColumnSorting="True" Width="100%" EditMode="InPlace" CommandItemDisplay="Top">
    <CommandItemSettings AddNewRecordText="Ajouter un accès" RefreshText="Rafraîchir" />
    <Columns>

Aucun enregistrement

    </Columns>
    <NoRecordsTemplate>Aucun enregistrement disponible.</NoRecordsTemplate>
</MasterTableView>

Pagination

<PagerStyle PagerTextFormat="Changer la page: {4}  |  Affiche la page {0} de {1}, éléments {2} à {3} de {5}" PageSizeLabelText="Nombre par page"  FirstPageText="Première page" FirstPageToolTip="Première page" PrevPageText="Page précédente" PrevPagesToolTip="Page précédente" NextPageText="Page suivante" NextPagesToolTip="Page suivante" LastPageText="Dernière page" LastPageToolTip="Dernière page"  />

Colonnes de commande (Éditer et supprimer)

<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn" HeaderStyle-Width="45px"
    EditText="Éditer" CancelText="Annuler" UpdateText="Confirmer" InsertText="Insérer"  >
    <ItemStyle CssClass="MyImageButton" />
</telerik:GridEditCommandColumn>                    
 
<telerik:GridButtonColumn ConfirmText="Supprimer l'accès ?" ConfirmDialogType="RadWindow"  HeaderStyle-Width="25px" 
    ConfirmTitle="Delete" ButtonType="ImageButton" CommandName="Delete" Text="Supprimer"
    UniqueName="DeleteColumn">
    <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" />
</telerik:GridButtonColumn>

Commande personnalisée

<telerik:GridButtonColumn  HeaderStyle-Width="25px" 
    ButtonType="PushButton" CommandName="Accepter" Text="Accepter"
    UniqueName="AccepterColumn" >
</telerik:GridButtonColumn>
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
    if (e.CommandName == "Accepter")
    {
        GridDataItem item = (GridDataItem)e.Item;
        int id = GetIdItem(item.KeyValues);
        // ...
    }
}

DataKeyName

protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
    if (e.CommandName == "Ajouter")
    {
        GridDataItem item = (GridDataItem)e.Item;
        List<int> Idlist = GetDataKeyIdList(item.KeyValues, "EmployeeIds");
    }
}
/// <summary>
/// Obtient la liste des Id selon la clé fournie.
/// </summary>
/// <param name="keyvalues">Toutes les valeurs du dataKey</param>
/// <param name="key">Clé voulue</param>
/// <returns>Une liste de Ids.</returns>
private List<int> GetDataKeyIdList(string keyvalues, string key)
{
    List<int> valueList = new List<int>();
    if (keyvalues.Contains(key))
    {
        int start = keyvalues.IndexOf(key) + key.Length + 2; // 2 est :"
        int end = keyvalues.IndexOf('"', start);
        string values = keyvalues.Substring(start,end-start);
 
        // On extrait les Ids de KeyValues
        string[] IdExtract = values.Split(',');
 
        foreach (string id in IdExtract)
        {
            valueList.Add(Convert.ToInt32(id));
        }
    }
    return valueList;
}
 
/// <summary>
/// Obtient une valeur booléenne selon la clé fournie.
/// </summary>
/// <param name="keyvalues">Toutes les valeurs du dataKey</param>
/// <param name="key">Clé voulue</param>
/// <returns>La valeur booléenne.</returns>
private bool GetDataKeyBoolean(string keyvalues, string key)
{
    bool value=false;
    if (keyvalues.Contains(key))
    {
        int start = keyvalues.IndexOf(key) + key.Length + 2; // 2 est :"
        int end = keyvalues.IndexOf('"', start);
        string values = keyvalues.Substring(start, end - start);
 
        value = Convert.ToBoolean(values);
    }
    return value;
}

Ressources

RadAjaxManager

  <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server /> 
protected void Page_Load(object sender, EventArgs e)
{ 
    RadAjaxManager1.Alert("PageLoad"); 
} 

RadUpload

Insérer un fichier

Code pour insérer les données d'un fichier téléchargé à l'aide de LINQ. L'objet file est de type Telerik.Web.UI.UploadedFile.

foreach (UploadedFile file in ruUpload.UploadedFiles)
{
    byte[] file_byte = new byte[file.InputStream.Length];
    file.InputStream.Read(file_byte, 0, file.ContentLength);
 
    System.Data.Linq.Binary file_binary = new System.Data.Linq.Binary(file_byte);
    Fichier fichier = new Fichier   // objet qui a une représentation dans la BD
    {
        donnees = file_binary,
        nomFichier = file.GetName()
    };
    db.Fichier.InsertOnSubmit(sa);
    db.SubmitChanges();
}

Récupérer le fichier

Fichier fichier = null;
using (CustomDataContext db = new CustomDataContext())
{
    fichier = db.Fichier.Single(f => f.Id == id);
}
FileInfo file = new FileInfo(fichier.nomFichier);
context.Response.ContentType = GetContentType(file.Extension);
context.Response.AddHeader("Content-Disposition", " filename=" + fichier.nomFichier);
context.Response.AddHeader("Content-Length", attachment.Data.Length.ToString());
context.Response.BinaryWrite(fichier.donnees.ToArray());
context.Response.Flush();
private string GetContentType(string fileExtension)
{
    switch (fileExtension) {
        case ".jpg":
        case ".jpeg":
            return "image/jpeg";
        case ".docx":
            return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
        case ".doc":
            return "application/msword";
        case ".xlsx":
            return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        case ".xls":
            return "application/vnd.ms-excel";
        case ".gif":
            return "image/gif";
        case ".png":
            return "image/png";
        case ".bmp":
            return "image/bmp";
        case ".pdf":
            return "application/pdf";             
        default:
            return "application/octet-stream";
    }
}