Frågan 26 juni 2003 12:32 #1 jag har en lista som ska skrivas ut. Den innehåller olika personer som är ansvariga för olika kunder. Nu när jag skriver ut så kan det förekomma att Nisse Nilsson skrivs ut två gånger hur gör jag så att en person bara skrivs ut en gång. Denna koden har jag idag för att skriva ut detta i en tabell
private void Page_Load(object sender, System.EventArgs e)
{
DataSet ds = LoadWebs();
DataView custDV = new DataView(ds.Tables[0],
null,
"Responsible",
DataViewRowState.CurrentRows);
ContactBox.DataSource = ResponsibleBox.DataSource = custDV;
ResponsibleBox.DataValueField = "Responsible";
ContactBox.DataValueField = "Contact";
ResponsibleBox.DataBind(); ContactBox.DataBind();
}
R renholm Medlem sedan apr. 2001 2 266 inlägg Troligen kommer du behöva loopa igenom din dataview och sedan med hjälp av Items.Conatains avgöra om värdet redan finns.
S SPiN Medlem sedan mars 2000 7 896 inlägg Om du inte hämtar informationen från en databas, då kan du sortera ut redan i SQL-frågan med nyckelordet DISTINCT.
Hur då:)? Visa mig lite kod
S SPiN Medlem sedan mars 2000 7 896 inlägg SELECT DISTINCT( fld ) FROM tbl
Men förstår du vad jag vill ha ut, jag tror man bara kan loopa igenom det så här typ:)
i pseudokod:
föregående person = "";
for i=0 to sista posten
{
if (föregående person!=nuvarande post)
visa i listan;
föregående person = nuvarande post;
}
G Gladh Medlem sedan maj 2001 2 812 inlägg Om du hämtar din data från en databas, med SELECT så kan du använda dig av DISTINCT för att få ut vad du vill ha.
Om du med SELECT name FROM table får följande resultat.
Nisse
Nisse
Erik
Nisse
Johan
Erik
Så får du med SELECT DISTINCT name FROM table
Nisse
Erik
Johan
Om du gör som du vill i din pseudokod, så måste namnen ligga i rätt ordning, du skulle inte få ut vad du vill om du hade haft en lista som min översta, du hade fått ut.
Nisse
Erik
Nisse
Johan
Erik
- M
Jag hämtar från en xml fil:)
R renholm Medlem sedan apr. 2001 2 266 inlägg Här har du ett exempel med en DropDownList
private void Page_Load(object sender, System.EventArgs e)
{
DataSet ds = LoadWebs();
foreach(DataRow row in ds.Tables[0].Rows)
{
ListItem item = new ListItem(row["test"], row["value"]);
if (!ddl.Item.Contains(item))
{
ddl.Items.Add(item);
}
}
R renholm Medlem sedan apr. 2001 2 266 inlägg ddl = DropDownList som jag skrev ovan.
Denna koden har jag idag för att skriva ut detta i en tabell
Vad försökre du binda detta till egentligen?
detta funkar inte varför?
private void Page_Load(object sender, System.EventArgs e)
{
DataSet ds = LoadWebs();
foreach(DataRow row in ds.Tables[0].Rows)
{
DataView custDV = new DataView(ds.Tables[0],
null,"Responsible",DataViewRowState.CurrentRows);
if (!ContactBox.Items.Contains(custDV))
{
ContactBox.Items.Add(custDV);
ContactBox.DataSource = ResponsibleBox.DataSource = custDV;
ResponsibleBox.DataValueField = "Responsible";
ContactBox.DataValueField = "Contact";
ResponsibleBox.DataBind(); ContactBox.DataBind();
}
}
}
det gör jag med min också
R renholm Medlem sedan apr. 2001 2 266 inlägg anledningen till att det inte funkar är att du har lagt in massa annan kod, är det två boxar du ska binda?
yes, jag skickar med min aspx kod
<%@ Page language="c#" Codebehind="rapport.aspx.cs" AutoEventWireup="false" Inherits="xml_dropdownlist.rapport" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>rapport</title>
<meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<style>BODY { FONT-SIZE: 10px; FONT-FAMILY: verdana }
TD { FONT-SIZE: 10px; FONT-FAMILY: verdana }
DIV { FONT-SIZE: 10px; FONT-FAMILY: verdana }
SELECT { FONT-SIZE: 10px; FONT-FAMILY: verdana }
INPUT { FONT-SIZE: 10px; FONT-FAMILY: verdana }
.headlineS { FONT-WEIGHT: bold; FONT-SIZE: 18px; PADDING-BOTTOM: 8px; COLOR: #888888 }
.name { }
.background { BACKGROUND-IMAGE: url(bak.gif); BACKGROUND-REPEAT: no-repeat }
.button { }
</style>
</HEAD>
<body bgColor="#ffffff">
<form id="rapport" method="post" runat="server">
<table>
<tr>
<td><asp:checkboxlist id="ResponsibleBox" Runat="server" EnableViewState="True"></asp:checkboxlist></td>
<td> </td>
<td><asp:checkboxlist id="ContactBox" Runat="server" EnableViewState="True"></asp:checkboxlist></td>
</tr>
<tr>
<td align="right" colSpan="3"><asp:button id="ResultButton" Runat="server" Text="Generera epostadresser"></asp:button></td>
</tr>
<tr>
<td align="middle" colSpan="3"><asp:textbox id="Emails" Runat="server" Rows="10" Columns="80" TextMode="MultiLine"></asp:textbox></td>
</tr>
</table>
</form>
</body>
</HTML>
vill nu att de bara skriver ut ett namn en gång. Just nu skrivs ett namn som finnas två gånger i xml filen ut flera gånger.
R renholm Medlem sedan apr. 2001 2 266 inlägg Ok, då blir det så här:
DataSet ds = LoadWebs();
foreach(DataRow row in ds.Tables[0].Rows)
{
ListItem item = new ListItem(row["Responsible"], row["Responsible"]);
if (!ResponsibleBox.Item.Contains(item))
{
ResponsibleBox.Items.Add(item);
ContactBox.Items.Add(item);
}
}
Tackar nu funkar det tack så jätte mycket för hjälpen:)
En liten sak bara nu skrivs Responsible ut i båda tabellerna, den andra ska skriva ut en del andra saker, hur gör jag lättast detta. Uppskattar din hjälp:) Är nybörjare på detta
R renholm Medlem sedan apr. 2001 2 266 inlägg Så här möjligen
DataSet ds = LoadWebs();
foreach(DataRow row in ds.Tables[0].Rows)
{
ListItem item = new ListItem(row["Responsible"], row["Responsible"]);
if (!ResponsibleBox.Item.Contains(item))
{
ResponsibleBox.Items.Add(item);
}
item = new ListItem(row["Contact"], row["Contact"]);
if (!ContactBox.Item.Contains(item))
{
ContactBox.Items.Add(item);
}
}
Fick ändra om lite i koden nu funkar det:) Du ska ha ett stort tack:)