cermo-lit.ru

  

Bästa artiklarna:

  
Main / Hur man lägger till datagridviewcombobox kolumn klick

Hur man lägger till datagridviewcomboboxkolumn klick

En utvecklare. En eweek. Trådstartare. NET 2. Steg 1. Skapa ett nytt WinForms-applikationsprojekt. Lägg till en DataGridView i formuläret. Lägg till en BindingSource i formuläret. Lägg till följande kod: Ladda mig. GetChildTable Me. Lägg till 1, 3, "Barn 1".

Lägg till 2, 2, "Barn 2". Observera att rutnätet innehåller tre TextBox-kolumner. Det är standard för de flesta typer av data. Om du vill ha en annan kolumntyp för sådana data måste du lägga till kolumnen själv.

Så här gör du för en kolumn med ComboBoxes. Steg 2. Lägg till en andra BindingSource i formuläret. Välj DataGridView och expandera den smarta taggen, den lilla pilen högst upp till höger.

Klicka på "Lägg till kolumn". Klicka på "Lägg till". Klicka på "Stäng". Expandera den smarta taggen igen. Klicka på "Redigera kolumner". Klicka på "OK". Ta bort den föregående koden och lägg till följande: GetParentTable Me. BindingSource2 Me. Lägg till 1, "Förälder 1". Lägg till 2, "Parent 2". Det finns flera saker att notera här: Rutnätet innehåller fortfarande bara tre kolumner men en av dem innehåller kombinationsrutor.

Det beror på att du, genom att ställa in DataPropertyName för kolumnen, sa att den skulle binda till den kolumnen i rutnätets DataSource. Som sådan har en ny kolumn inte lagts till i rutnätet för den kolumnen i DataSource. Kolumnerna är inte i samma ordning som de var tidigare.

Du kan tvinga kolumnerna att visas i den ordning du vill genom att lägga till dem alla vid designtid och inte förlita sig på rutan för att automatiskt generera någon av dem. Du kan också röra med DisplayIndex-egenskaperna för varje kolumn, men det är något du kan leka med.

Detta är en funktion av att du har ställt in DisplayMember i kolumnen, som bestämmer vilken kolumn från dess DataSource som visas. Varför sparas inte mina data i min databas?

För det första är datakällan i rutnätet och kolumnens datakälla två olika saker. Rutnätets DataSource kontrollerar vilka data som tilldelas egenskapen Value för varje cell. Kolumnens DataSource styr vad som visas i rullgardinslistorna i cellerna. Normalt innehåller din kombinationsruta ingen ComboBox. Det du ser är helt enkelt ritat i cellen. När du sätter en cell i redigeringsläge, t.ex. Egenskapsvärdena DataSource, DisplayMember och ValueMember i kolumnen trycks alla ner till cellen, vilket i sin tur driver dem till ComboBox-kontrollen.

Som sådan görs bindningen på exakt samma sätt som i en vanlig ComboBox. ComboBox bäddas sedan in i cellen och dess rullgardinslista visas. När användaren gör ett val är det bara den inbäddade ComboBox som ändras.

Den underliggande cellen påverkas inte i detta skede, vilket alltid är sättet med en DataGridView. När användaren trycker på Enter eller lämnar cellen, trycks ComboBoxs SelectedValue sedan till cellens Value-egenskap och ComboBox tas bort från cellen.

Part2CategoryCode hur får jag den valda koden i kombinationsrutan. ?? Index av mCC dgPart2. Kolumner "CategoryCode". Du måste komma ihåg att det du ser i rutnätet inte nödvändigtvis är vad den data som är bunden till det faktiskt innehåller. Kom ihåg att den datatabell som är bunden till rutnätet faktiskt innehåller främmande nyckelvärden i den kolumnen.

De data du ser är motsvarande vänliga namn från den relaterade tabellen. Det är INTE de data som är bundna till nätet. Så, varje cell i rutnätet har en Value-egenskap och det motsvarar fältets värde från datakällan som är bunden till den cellen. Om du vill ändra något i kod är det ATT du ändrar. Du går inte och hämtar det vänliga namnet från den relaterade tabellen.

Du får ID. För att visa detta i aktion, följ alla instruktioner i det första inlägget i den här tråden. Lägg nu till en knapp i ditt formulär och lägg till följande kod: Klicka på mig. DataGridView1 "Kolumn1", 0. Det är det vänliga namnet från överordnadstabellen men värdet för cellen är faktiskt bara siffran 3, vilket är det ID som motsvarar "Förälder 3".

Klicka nu på knappen. Lägg märke till texten i celländringen? Du ändrade cellens värde till nummer 2 och den visade texten är "Förälder 2", vilket är det vänliga namnet från överordnadstabellen som motsvarar det ID du ställt in. Senast redigerad av jmcilhinney; 28 oktober 2008 kl. 01: Men jag ser inte hur man ändrar "columntype" för en befintlig kolumn. Låter det vettigt? Betygsätt alla inlägg som du tycker är till hjälp - även i gamla trådar!

Använd länken till vänster - "Betygsätt detta inlägg". Några informativa länkar: Du kan inte ändra typen av en kolumn när den har skapats. På så sätt kommer den angivna datakällkolumnen att bindas till din kombinationsruta-kolumn istället för att skapa en ny textruta-kolumn. Det är allt i det första inlägget. Jag vet inte allt varför och hur, men jag bör nämna att det här kanske inte är exakt som du förväntar dig. Det verkar som om kolumnen du lägger till vid designtiden inte är den kolumn du slutligen ser. Som sådan kan du inte hänvisa till kolumnen med hjälp av medlemsvariabeln efter att ha bundet dina data.

Om du vill ändra positionen för din kombinationsrutekolumn måste du indexera rutnätets kolumnsamling för att få en referens. Vidare till detta, låt oss ta itu med följande punkt från inlägg 1: Börjar med samma projekt som det var i slutet av inlägg 1, IDE skapar en medlemsvariabel med namnet 'Kolumn1' när du lägger till kombinationsrutan kolumn i designern. Som sådan kanske du tror att du kan ordna kolumnerna genom att ställa in DisplayIndex genom den medlemsvariabeln, så här: BindingSource1 Me.

Det verkar som att det objekt som Column1-variabeln hänvisar till inte är den faktiska kolumnen du ser när du kör projektet. Jag tror att den ursprungliga kolumnen är klonad och att klonen visas.

Jag måste ännu bekräfta det, och om det är sant har jag ingen aning om varför det görs på det sättet. Hur som helst, vad du behöver göra är att hänvisa till den faktiska kolumnen som visas med index och sedan ställa in dess DisplayIndex. Observera att inställning av DisplayIndex ändrar ordningen i vilken kolumnerna visas men det ändrar INTE ordningen på kolumnens samling i rutnätet och ändrar således inte indexegenskaperna för själva kolumnerna.

Nu är en annan udda punkt att notera att själva kolumnerna faktiskt finns i rutnätets kolumnsamling i samma ordning som kolumnerna de är bundna till i datakällan. I det här fallet är det som vi verkligen vill att DisplayIndex i varje kolumn ska matcha dess index. För detta ändamål kan vi flytta kolumnen för kombinationsrutor tillbaka till sin ursprungliga position mellan de två textrutakolumnerna genom att ändra händelseshanteraren Ladda till detta: Kolumner.

Om steg 2 steg 9: När jag klickar på redigera kolumner har rullgardinsmenyn DataPropertyName inget tillgängligt i det förutom ingen.

(с) 2019 cermo-lit.ru