Je travaille sur la base de données northwind
. Dans mon AspxGridview
je veux montrer comboBox
. Je remplis la grille à l'arrière C#
Je veux aussi que mon combo remplisse la fin.Afficher combo sur AspxGridview
<dxwgv:ASPxGridView ID="ASPxGridView1" runat="server"
AutoGenerateColumns="False" KeyFieldName="CategoryID"
oncelleditorinitialize="ASPxGridView1_CellEditorInitialize">
<Columns>
<dxwgv:GridViewCommandColumn VisibleIndex="0" Width="80px">
<EditButton Visible="True">
</EditButton>
<NewButton Visible="True">
</NewButton>
<DeleteButton Visible="True">
</DeleteButton>
</dxwgv:GridViewCommandColumn>
<dxwgv:GridViewDataTextColumn Caption="CategoryID" FieldName="CategoryID"
VisibleIndex="1">
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataComboBoxColumn Caption="CategoryName"
FieldName="CategoryName" VisibleIndex="2">
<PropertiesComboBox TextField="Value" ValueField="key" ValueType="System.Int32">
<ClientSideEvents SelectedIndexChanged="function(s, e) { OnBankChanged(s); }" />
</PropertiesComboBox>
</dxwgv:GridViewDataComboBoxColumn>
<dxwgv:GridViewDataTextColumn Caption="Description" FieldName="Description"
VisibleIndex="3">
</dxwgv:GridViewDataTextColumn>
</Columns>
</dxwgv:ASPxGridView>
Pour remplir la grille-je utiliser la syntaxe ci-dessous C#.
DataClasses1DataContext db = new DataClasses1DataContext();
var r = from p in db.Categories
select p;
ASPxGridView1.DataSource = r;
ASPxGridView1.DataBind();
Pour remplir la cellule gridview du combo i utilise Bellow C# syntaxe
protected void ASPxGridView1_CellEditorInitialize(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs e)
{
if (!ASPxGridView1.IsEditing || e.Column.FieldName != "CategoryID") return;
ASPxComboBox combo = e.Editor as ASPxComboBox;
if (!(e.KeyValue == DBNull.Value || e.KeyValue == null)) //return;
{
object val = ASPxGridView1.GetRowValuesByKeyValue(e.KeyValue, "CategoryID");
if (val == DBNull.Value) return;
Int32 CategoryID = (Int32)val;
FillCityCombo(combo, CategoryID);
}
combo.Callback += new CallbackEventHandlerBase(cmbBranch_OnCallback);
}
private void cmbBranch_OnCallback(object source, CallbackEventArgsBase e)
{
FillCityCombo(source as ASPxComboBox, Convert.ToInt16(e.Parameter));
}
protected void FillCityCombo(ASPxComboBox cmb, Int32 CategoryID)
{
//cmb.Items.Clear();
//cmb.DataSourceID = "";
DataClasses1DataContext db = new DataClasses1DataContext();
var r = from p in db.Categories
select new { p.CategoryID,p.CategoryName};
cmb.DataSource = r;
cmb.DataBind();
}
Quand je lance le code AspxGridview
bien remplir, mais quand je clique sur Modifier ou Nouvelle commande sur le côté gauche de mon grille me montre un message d'erreur ci-dessous:
**Object reference not set to an instance of an object.**
- Quel est le problème?
- Comment résoudre ce problème?
- Comment lier un combo de cellules sur un gridview aspx?
merci c'est vraiment une grosse erreur.thaks.Ce problème est résoudre mais quand je clique sur Nouveau lien de commande de AspxGridview mon combo n'est pas charger .vous s'il vous plaît me dire la raison Merci encore – shamim
cliquez sur la nouvelle commande pourquoi cette méthode n'est pas actif (source objet, CallbackEventArgsBase e) privé vide cmbBranch_OnCallback { FillCityCombo (source comme ASPxComboBox, Convert.ToInt16 (e.Parameter)?); } – shamim
Pourquoi mon événement OnCallback n'est pas actif. Comment activer cet event.plz voir ma syntaxe ci-dessus. – shamim