webForumDet fria alternativet

Gridview värden

3 svar · 717 visningar · startad av ironhead

ironheadMedlem sedan mars 20011 346 inlägg
#1

Hej!

Jag har en gridview som skriver ut kategori och sedan alla artiklar under denna. När jag ska loopa igenom denna gridview, så ersätter kategorinamnet artikelnamnet, och antalet kommer på raden under...hur göra?

    <asp:GridView CssClass="Form" ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1">
        <Columns>
           <asp:TemplateField HeaderText="Kategori">
                <ItemTemplate>
                    <asp:Label ID="CategoryName" runat="server" Text='<%# Eval("CategoryName") %>' Visible="False" />
                </ItemTemplate>
            </asp:TemplateField>
            
            <asp:TemplateField HeaderText="Artikel">
                <ItemTemplate>
                    <asp:Label runat="server" ID="Art" Text='<%#eval("ArticleName") %>' />
                </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="Antal" ItemStyle-HorizontalAlign="Center">
              <ItemTemplate>
                <asp:label runat="server" ID="Ant" Text='<%# eval("Kpd") %>' />
              </ItemTemplate>
            </asp:TemplateField> 
          
       </Columns>
    </asp:GridView>
Codebehid:
   
      Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then

            Dim drv As DataRowView = CType(e.Row.DataItem, DataRowView)
            If tmpCategoryName <> drv("CategoryName").ToString() Then
                tmpCategoryName = drv("CategoryName").ToString()

                Dim tbl As Table = CType(e.Row.Parent, Table)
                If Not tbl Is Nothing Then
                    Dim row As New GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Normal)
                    Dim cell As TableCell = New TableCell()

                    cell.ColumnSpan = GridView1.Columns.Count
                    cell.Width = Unit.Percentage(100)
                    cell.Style.Add("font-weight", "bold")
                    cell.Style.Add("background-color", "#dcdee2")
                    cell.Style.Add("color", "black")

                    Dim span As New HtmlGenericControl("span")
                    span.InnerHtml = tmpCategoryName
                    cell.Controls.Add(span)
                    row.Cells.Add(cell)
                    tbl.Rows.AddAt(tbl.Rows.Count - 1, row)
                End If
            End If

        End If
    End Sub

Vid spara (sparaknapp):

    Private Sub SaveorderData()
        Dim count As Integer = 0
        Do While (count < GridView1.Rows.Count)
            Dim ArticleName As Label = CType(GridView1.Rows(count).FindControl("ArticleName"), Label)
            Dim Ant As TextBox = CType(GridView1.Rows(count).FindControl("Ant"), TextBox)
            Response.Write(ArticleName.Text & " |" & Ant.Text)<br />")
            count += 1
        Loop
    End Sub

Det jag får ut blir detta:

|1 (24)
Artikel2 |0 (0)
Artikel3 |1 (12)
|1 (8)

Kategorinamnet ersätter artikelnamnet, men antalet kommer med??!!
Hur kan man göra detta på ett korrekt sätt?

ironheadMedlem sedan mars 20011 346 inlägg
#2

Om jag skippar RowDataBound eventet där kategorin loopas, så funkar det att spara datat.
Kan man på något bättre sätt skapa kategori->artiklar lista?

ironheadMedlem sedan mars 20011 346 inlägg
#3

Kan man skapa en nästlad kontroll för att få till det?
I så fall, vilken kontroll ska man använda?

ironheadMedlem sedan mars 20011 346 inlägg
#4

När jag kolllar HTML-koden ser den ut såhär:

	<table class="Form" id="GridView1">
		<tr>
			<th scope="col">Kategori</th>
			<th scope="col">Art.nr</th>
			<th scope="col">Artikel</th>
		</tr>
		<tr>
			<td colspan="3"><span>Kategori1</span></td>
		</tr>
		<tr>
			<td></td>
			<td><span id="GridView1_ctl02_artnr">1</span></td>
			<td><span id="GridView1_ctl02_ArticleName">ArtNamn1</span></td>
		</tr>
		
		<tr>
			<td colspan="3"><span>Kategori2</span></td>
		</tr>
		<tr><td></td>
        <td><span id="GridView1_ctl04_artnr">2</span></td>
        <td><span id="GridView1_ctl04_ArticleName">ArtNamn2</span></td>
		</tr>
		<tr>
			<td></td>
			<td><span id="GridView1_ctl05_artnr">3</span></td>
			<td><span id="GridView1_ctl05_ArticleName">ArtNamn3</span></td>
		</tr>
	</table>

I "GridView1.Rows.Count" får jag 6 rader. När jag ska spara räknar den kategorin som en rad, men inte i rows.count.
Det innebär att jag inte får med de två sista raderna.

Fattar ingenting...kategoriraden ersätter vid uppräknandet, men vid sparandet räknas den inte...hilfe plz!

136 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)