Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Styra vidden på en imagebutton

Postades av 2005-02-04 11:27:42 - Erik Viklund, i forum asp.net generellt, Tråden har 13 Kommentarer och lästs av 418 personer

Har en datagrid som ser ut så här:

Namn Typ Måndag Tisdag Onsdag Torsdag Fredag
A6767 Projektor bild bild bild bild bild
B6766 Bärbar bild bild bild bild bild

Där bild är en imagebutton (stapel).

Jag vill styra bredden på bilderna beroende på vissa värden som plockas från en DB. Min kod för detta är:

.aspx

<ItemTemplate>
<table>
<tr>
<td><FONT face="Tahoma" size="1">FM</FONT></td>
<td><FONT face="Tahoma" size="1">EM</FONT></td>
</tr>
<tr>
<td class="kantlinje" width="20px">
<asp:ImageButton ID="fm" Height="3px" Width="7px"" CommandName="bokafm" Runat="server" ImageUrl="images\stapel.gif"></asp:ImageButton></td>
<td class="kantlinje" width="20px">
<asp:ImageButton ID="måndag" Width='<%#dtgObjekt.Attributes("widd")%>' CommandName="bokaem" Runat="server" ImageUrl="images\stapel.gif">
</asp:ImageButton></td>
</tr>
</table>
</ItemTemplate>

.codebehind
Har skapat ett dataset med värden i..........

If myDataset.Tables("Objekt").Rows.Count > 0 Then
Dim myTable As New DataTable("objekt")

Dim i As Integer

'myTable.Columns.Add("objektid", System.Type.GetType("System.String"))
myTable.Columns.Add("namn", System.Type.GetType("System.String"))
myTable.Columns.Add("typ", System.Type.GetType("System.String"))

myDataset.Tables.Add(myTable)

Dim bredd As String = "10px" 'Testar med att sätta statiskt värde (kommer från db egentligen)

For i = 0 To myDataset.Tables("Objekt").Rows.Count - 1
Dim myRow As DataRow = myTable.NewRow
'myRow("objektid") = bok.bokid
myRow("namn") = myDataset.Tables("Objekt").Rows(i).Item("Namn")
myRow("typ") = myDataset.Tables("Objekt").Rows(i).Item("Typ")

dtgObjekt.Attributes("widd") = bredd 'Skickar 10 px till imagebuttonens attribut
myTable.Rows.Add(myRow)
Next
dtgObjekt.DataSource = myDataset.Tables("Objekt")
dtgObjekt.DataBind()

Detta genererar felet:

Value of type 'String' cannot be converted to 'System.Web.UI.WebControls.Unit'

on line: <asp:ImageButton ID="måndag" Width='<%#dtgObjekt.Attributes("widd")%>' CommandName="bokaem" Runat="server" ImageUrl="images\stapel.gif">

Har testat köra "" istället för ' ' men utan lycka. Vad kan detta bero på?


Svara

Sv: Styra vidden på en imagebutton

Postades av 2005-02-04 12:23:48 - Johan Normén

Du har en Unit.Parse som du kan använda för att göra en Sträng till ett unit värde vilket krävs i detta fall.

....width = Unit.Parse(minString);

Mvh Johan


Svara

Sv:Styra vidden på en imagebutton

Postades av 2005-02-04 12:58:39 - Erik Viklund

Testade det nu:

Dim bredd as string = "10px"

dtgObjekt.Attributes("widd") = unit.parse(bredd)

men får fortfarande felet: value of type 'system.web.ui.webcontrols.unit' cannot be coverted to string






Svara

Sv: Styra vidden på en imagebutton

Postades av 2005-02-04 13:34:15 - Johan Normén

aaa sorry såg inte att du satte det som ett attrib...

Men vad är det för skumt attribut du sätter?

Widd?

Mvh Johan


Svara

Sv:Styra vidden på en imagebutton

Postades av 2005-02-04 13:44:05 - Erik Viklund

För att styra vidden på bilden från en variabel sätter jag följande:

<asp:ImageButton ID="måndag" Width='<%#dtgObjekt.Attributes("widd")%>' CommandName="bokaem" Runat="server" ImageUrl="images\stapel.gif">

och sen i code behind...

Dim bredd as string = "10px"
dtgObjekt.Attributes("widd") = bredd

Hur ska man annars göra??

MVH/ Erik


Svara

Sv: Styra vidden på en imagebutton

Postades av 2005-02-04 13:51:50 - Johan Normén

Jag had enog letat upp knappen i Item Created eventet för DataGriden, och sedan satt dess värde
via koden.

ImageButton.Width = Uint.Parse(DataItem...blabla);

Mvh Johan


Svara

Sv:Styra vidden på en imagebutton

Postades av 2005-02-04 14:09:19 - Erik Viklund

Vore bra om du förtydligade lite Johan. Är inte någon jätte stjärna på .net. Hur letar jag upp knappen i Item Created eventet för gridden.

Uppskattar att du tar dig tid.

MVh E


Svara

Sv: Styra vidden på en imagebutton

Postades av 2005-02-04 15:26:48 - Johan Normén

:-)

Jag har lite ont om tid själv just nu, därför kan jag inte göra så utförliga svar :-(

Du får in parametern DataGridItemEventArgs där du har ett item objekt. Detta objekt
skall vara controllen i sig. Från denna kan du kolla genom alla dess childs om någon av dessa är av typen
ImageButton om så är fallet så har du fått tag i din ImageButton och kan casta den för att sätta attributen.

Du kan leta efter ItemCreated eller ItemBound här i forumet jag vet att jag gett svar på detta innan.

Om du inte finner svaret eller annan hinner före kan jag skriva lite kod senare idag om du vill? just nu sitter jag lite dumt till :-(

Mvh Johan


Svara

Sv:Styra vidden på en imagebutton

Postades av 2005-02-04 15:31:41 - Erik Viklund

Ok Johan. Skall leta på forumet. Tacksam för hjälpen :) Lägger in ett nytt inlägg om jag inte hittar något så kan du kanske lägga in lite kod då du får tid.

MVH/ Erik


Svara

Sv: Styra vidden på en imagebutton

Postades av 2005-02-04 15:34:16 - Johan Normén

Har lite pseudo kod här dock... som kan vägleda dig.

<code>
protected void ArticleDataGrid_ItemDataBound(object sender,DataGridItemEventArgs e)
{
foreach(Control x in e.Item.Cells[5].Controls)
{
ImageButton imageButton x as ImageButton;
if(imageButton != null)
' har knappen
}
}
</code>

Mvh Johan


Svara

Sv:Styra vidden på en imagebutton

Postades av 2005-02-04 16:26:49 - Erik Viklund

Testade detta nu:

1. Skapade en ItemCreated sub för datagridden i codebehind

<code>

Private Sub dtgObjekt_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dtgObjekt.ItemCreated
Dim bredd As String = "10px"

CType(e.Item.FindControl("måndag"), ImageButton).Width = Unit.Parse(bredd)
End Sub

</code>

och i .ascx

<code>
<asp:ImageButton ID="måndag" CommandName="bokaem" Runat="server" ImageUrl="images\stapel.gif"></asp:ImageButton></td>
</code>

för då följande fel...

Object reference not set to an instance of an object.
On line:

Dim bredd as string = "10px"
CType(e.Item.FindControl("måndag"), ImageButton).Width = Unit.Parse(bredd) 'här blir felet


Svara

Sv: Styra vidden på en imagebutton

Postades av 2005-02-04 17:24:39 - Johan Normén

Du måste alltid kolla om du får tag i den, annars får du null felet. Se min kod ovan.

as kanske inte finnsi VB .Net? så får du nog göra en GetType och kolla om den är samma som en
ImageButton typ.

Mvh Johan


Svara

Sv:Styra vidden på en imagebutton

Postades av 2005-02-07 11:56:44 - Erik Viklund

Jag blir galen:( får det inte att fungera.. Var det så här du menade Johan? Har gjort en ItemDataBound för att ge Imagebuttonen ett värde, men den kör ju aldrig denna sub. Ska inte den subben köras när den anropas via namnet från datagridden? Tex OnItemDataBound="dtgObjekt_ItemDataBound"
<code>
Private Sub dtgObjekt_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dtgObjekt.ItemDataBound
Dim item As ListItemType = e.Item.ItemType
If item = ListItemType.Item Or item = ListItemType.AlternatingItem Then
Dim imgbutton As ImageButton = CType(e.Item.FindControl("Måndag"), ImageButton)
imgbutton.Width = Unit.Pixel(10)
End If
</code>
i html..
<code>
<asp:datagrid id="dtgObjekt" OnItemDataBound="dtgObjekt_ItemDataBound" runat="server" Width="704px" AutoGenerateColumns="False">
<ItemTemplate>
<asp:ImageButton ID="måndag" width = '<%# DataBinder.Eval(Container.DataItem, "bredd") %>' CommandName="bokafm" Runat="server" ImageUrl="images\stapel.gif"></asp:ImageButton></td>
</ItemTemplate>
</asp:datagrid>
</code>

När man debuggar stannar den på InitializeComponent(). Går inte ens in i form load.

känner mig helt lost nu.


Svara

Sv: Styra vidden på en imagebutton

Postades av 2005-02-07 15:22:37 - Erik Viklund

NU FUNKAR DET.. Skapade en ny .aspx sida, la in en OnItemBound till datagridden samt en imagebutton. I subben dtgObjekt_ItemDataBound la jag in koden:

<code>
Dim item As ListItemType = e.Item.ItemType
Dim pnl As ImageButton

Select Case item
Case ListItemType.AlternatingItem, ListItemType.Item
pnl = CType(e.Item.FindControl("mondayfm"), ImageButton)
pnl.Width = Unit.Pixel(30)


Case ListItemType.Header
'Inget
Case ListItemType.Footer
'Inget
End Select
</code>
vilket funkade finfint. Men då uppstod nästa problem. Om jag försöker göra samma i en webcontrol funkar det inte. Den går aldrig in i subben. Lyfter därför detta till ett nytt inlägg.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 602
27 953
271 705
5 680
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies