Verknüpfung für (d.e.Item.ItemType==ListItemType.Item | e.Item.ItemType==ListItemType.AlternatingItem)




 

 Bei Verwendung eines DataGrid in ASP.Net gibt es wirklich keine Verknüpfungsmethode für 



```
(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem) 

```

 Grundsätzlich ist "Element kein Element, kein Header, Fußzeile, Trennzeichen". 


 Ich habe keine gefunden, aber ich dachte, ich würde es bis StackOverflow setzen, um zu sehen, ob ich eine vermisse.
Kein kurzer Schnitt, sondern kapselt dies in eine Funktion ein, und Ihr Code ist viel lesbarer.
<p>wenn sie .net 3.5 verwenden, können sie <a href="http://msdn.microsoft.com/en-us/library/system.data.datatableextensions.asenumerable.aspx"><code>datatableextensions.asenumerable</code></a> (eine erweiterungsmethode) verwenden. wenn sie wirklich einen <code>list&lt;datarow&gt;</code> brauchen, anstatt nur <code>ienumerable&lt;datarow&gt;</code>, können sie <a href="http://msdn.microsoft.com/en-us/library/bb342261.aspx"><code>enumerable.tolist</code></a> aufrufen:</p><pre><code>ienumerable&lt;datarow&gt; sequence = dt.asenumerable(); </code></pre><p>oder</p><pre><code>using system.linq; ... list&lt;datarow&gt; list = dt.asenumerable().tolist(); </code></pre> <p>es gibt eine verknüpfung zum navigieren in der board-ansicht, jedoch nicht von karte zu karte, während sie sie ansehen. wir werden das untersuchen, danke.</p> <p>ihr <code>meta\_query</code> muss ein <em> verschachteltes </em> array sein.</p><pre><code>$args = array( 'posts\_per\_page' =&gt; '5', 'cat' =&gt; '3', 'orderby' =&gt; 'rand', 'meta\_query' =&gt; array( array( 'key' =&gt; 'featured list', 'value' =&gt; 'yes' ) ) ); </code></pre><p>und ich habe das gefühl, dass sie keine <code>like</code>-übereinstimmung benötigen - dies führt einen losen vergleich durch und ist nicht so effizient wie eine exakte übereinstimmung.</p> <p>so erhalten sie die liste der spalten in der standardreihenfolge ohne die fehlerhafte spalte:</p><pre><code>select string\_agg(quote\_ident(attname), ', ' order by attnum) from pg\_attribute where attrelid = 'myschema.mytable'::regclass and not attisdropped -- no dropped (dead) columns and attnum &gt; 0 -- no system columns and attname &lt;&gt; 'bad\_column' -- case sensitive! </code></pre><p>oder einfach <code>where attrelid = 'mytable'::regclass</code>, wenn sie darauf vertrauen, dass der suchpfad <a href="https://stackoverflow.com/questions/9067335/how-does-the-search-path-influence-identifier-resolution-and-the-current-schema/9067777#9067777"></a> in das richtige schema aufgelöst wird.</p><p> <a href="http://www.postgresql.org/docs/current/interactive/functions-string.html#functions-string-other"><code>quote\_ident()</code></a> fügt bei bedarf doppelte anführungszeichen hinzu.</p><p>ich habe die gleiche frage <a href="http://www.postgresql.org/message-id/flat/1180483885.536572.84550@q69g2000hsb.googlegroups.com#1180483885.536572.84550@q69g2000hsb.googlegroups.com">2007 auf pgsql-general</a> gestellt. es war damals postgres 8.2. süße erinnerungen ...</p><p>verbunden:</p><ul> <li> <a href="https://stackoverflow.com/a/24089729/939860">so überprüfen sie, ob eine tabelle in einem bestimmten schema vorhanden ist</a> </li> </ul> 1. Erstellen Sie eine neue ASP.NET-Webanwendung mit dem Namen "WebProject" mithilfe der Webanwendungsvorlage (Authentifizierung: Benutzerkonto).
2. Fügen Sie der Lösung mit dem Namen "DataAccess" ein weiteres Projekt hinzu (sagen wir Klassenbibliotheksart, obwohl diese nicht relevant ist)
3. Verschieben Sie jetzt den Ordner ApplicationDbContext / ApplicationUser files & migrations in das DataAccess-Projekt.
4. In diesem Stadium wird die Erstellung fehlschlagen, daher müssen wir die project.json für korrekte Referenzen korrigieren.
5. Fügen Sie für DataAccess-Projekt folgende Abhängigkeiten hinzu 


```
"dependencies": {
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
}

```
6. Fügen Sie für WebProject `DataAccess` als Abhängigkeit hinzu. Da `DataAccess` auf zwei Pakete verweist, können Sie diese Referenzen aus WebProject entfernen.   
 Build sollte nun erfolgreich sein und Sie können eine Webanwendung starten.

 So verwenden Sie ef-Migrationen: 

 Wechseln Sie in der Befehlszeile in das Verzeichnis von WebProject (und nicht das DataAccess-Projekt). Alle ef-Befehle funktionieren von hier aus gut. 

 Um neue Migrationen zum Migrationsordner des DataAccess-Projekts hinzuzufügen, müssen Sie die Option `-p` verwenden. Mögen,   
 `dnx ef migrations add Sample -p DataAccess` . 

 Das Problem tritt auf, weil die Befehle von cmd im DataAccess-Projekt ausgeführt werden. Ihre Startup-Klasse, die alle Dienste initialisiert, befindet sich in WebProject. Wenn Sie versuchen, Befehle aus dem DataAccess-Verzeichnis auszuführen, wird `dnx ef` erkannt, da auf `EntityFramework.Commands` verwiesen wird. Wenn Sie jedoch versuchen, die Migrationen zu verwenden, werden Dienste nicht initialisiert. Daher wird das Überschreiben der Ausnahme fehlschlagen. <p>wenn dies meine entwurfsentscheidung wäre, würde ich wahrscheinlich eher eine option c (modifizierte option a) wählen.</p><h3>erstens, warum nicht 'option b':</h3><p>zum einen gefällt mir die klarheit, dass jedes produkt seinen eigenen tisch hat. wenn es sich nur um eine große tabelle mit einem feld zur bestimmung des typs handelt, ist die beziehung nicht so klar.</p><p>zum anderen würde die indizierungsstrategie immer erfordern, dass dieses typfeld aufgelistet wird. da es sich nur um 4 typen handelt, ist die indexkardinalität extrem niedrig (<code>select * from product\_table where type='x'</code> führt im grunde sowieso einen vollständigen tabellenscan durch)</p><h3>option c.</h3><ul> <li>erstellen sie eine übergeordnete tabelle, die nur die spalten enthält, die alle typen gemeinsam nutzen</li> <li>erstellen sie jeden produkttyp als eigene tabelle mit ihren einzelnen spalten, mit einem zusätzlichen: ein link zur übergeordneten tabelle</li> <li>erstellen sie jede 'link'-tabelle: product\_option, model\_option usw. mit links zu den jeweiligen schlüsseln.</li> <li>für diejenigen mit wechselseitigen links (model\_option, option\_model) erstellen sie auch diese tabellen. dies erhöht die klarheit ihrer joins für alle, die sich das ansehen.</li> </ul><p>der nachteil ist die komplexität, sicherzustellen, dass waisen vermieden werden, wenn dinge aktualisiert/gelöscht werden, und zunächst die abfragen zu entwerfen, die diese tabellen verwenden.</p> <p>verwenden sie <code>addfield()</code>. hier ist ein beispiel:</p><pre><code>$query = db\_select('super\_long\_table', 'slt'); $query-&gt;addfield('slt', 'mys\_super\_long\_field', 'mslf'); </code></pre><p>an <code>addfield()</code> übergebene argumente sind:</p><ul> <li>tabellenalias</li> <li>feld - ihr langer feldname wird hier sein</li> <li>alias ​​- ihr kurzfeld-alias ​​wird hier sein</li> </ul><p>lesen sie mehr darüber <a href="https://api.drupal.org/api/drupal/includes!database!select.inc/function/selectqueryinterface%3a%3aaddfield/7">hier</a> .</p> <p>ich denke, dies wirft weitere fragen und potenzielle probleme auf:</p><ol> <li>ist es wirklich notwendig, zwei getrennte arten von feldern für diese arten von zahlen zu haben? die tatsache, dass sie probleme haben, sie richtig zu kennzeichnen, bedeutet, dass dies wahrscheinlich zu einer schlechten benutzererfahrung führt.</li> <li>was ist, wenn der benutzer der meinung ist, dass die antwort eine dezimalstelle enthält, aber nur eine ganze zahl eingeben darf? sollten sie auf- oder abrunden?</li> <li>gibt es eine möglichkeit, sie nur mit einem nummernfeld zu versehen und den rest programmgesteuert zu erledigen? vielleicht dezimalstellen runden oder entfernen?</li> </ol><p>wenn sie sie nicht zu einem feldtyp kombinieren können, können sie sie auf jedem etikett explizit angeben:</p><ul> <li>geben sie eine zahl ein (dezimalstellen erlaubt)</li> <li>geben sie eine zahl ein (keine dezimalstellen)</li> </ul> <p>sie können so etwas tun:</p><pre><code>datatable dt = new datatable(); for (int i = 0; i &lt; gridview1.columns.count; i++) { dt.columns.add("column"+i.tostring()); } foreach (gridviewrow row in gridview1.rows) { datarow dr = dt.newrow(); for(int j = 0;j&lt;gridview1.columns.count;j++) { dr["column" + j.tostring()] = row.cells[j].text; } dt.rows.add(dr); } </code></pre><p>und das wird zeigen, dass es funktioniert.</p><pre><code>gridview6.datasource = dt; gridview6.databind(); </code></pre> <p>in stl gibt es einen entsprechenden typ, der <code>std::map</code> heißt.</p><p>es hat die gleiche grundfunktionalität wie ein .net dictionary, die implementierung ist jedoch sehr unterschiedlich. <code>std::map</code> basiert intern auf einer rot-schwarzen baumdatenstruktur, während <code>dictionary</code> intern eine hashtabelle verwendet.</p><p>wenn sie nur nach etwas suchen, das dasselbe verhalten aufweist, reicht <code>std::map</code> aus. wenn sie jedoch große datenmengen haben, müssen sie sich der unterschiedlichen leistungsmerkmale bewusst sein.</p>