webForumDet fria alternativet

doCommand i en gridview, textruta

.NET

4 svar · 557 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hej alla pigga :) !

Jag har ett besvärligt problem (tror jag)...jag skulle vilja använda det gamla hederliga kommandot doCommand('bold') för att sätta fetstil i en text i en textruta (.net kontroll).

Jag har en masterpage samt en fil som heter default.aspx kopplad till denna. I denna sida finns det en gridview (GVAds) som bl.a har detta templatefield:

         <asp:TemplateField HeaderText="Text" SortExpression="MainText">
          <ItemTemplate>
           <asp:Label runat="server" id="MainText2" Text='<%# eval("MainText") %>' />
          </ItemTemplate>
          <EditItemTemplate>
           <img border="0" onclick="doCommand('bold');" src="fetstil.gif" /><br />
           <asp:TextBox ID="MainText" Text='<%# bind("MainText") %>' runat="server" TextMode="MultiLine" />
          </EditItemTemplate>                              
         </asp:TemplateField>

Javascriptet

function doCommand(command){
var maintxt = document.getElementById("MainText");
	maintxt.document.execCommand(command);
}

när jag klickar på bilden efter att jag markerat text i textrutan, får jag felmeddelandet: "Objekt krävs"...visst ett javascript fel...men kanske är relaterat till asp.net.

hur kan man göra för att kunna göra text i en textruta till fetstil som befinner sig i en gridview och som dessutom befinner sig i en masterpage...?

Medlem sedan mars 20011 346 inlägg
#2

...är lite trög i denna timme...jag behöver naturligtvis den fullständiga sökvägen till textrutan ifrån den rad jag redigerar....men hur ska jag få tag på den?

Den ser ut (för en rad) såhär:

ctl00$ContentPlaceHolder1$GVAds$ctl02$MainText

hur ska jag kunna få knappen till:

<img border="0" onclick="ctl00$ContentPlaceHolder1$GVAds$ctl02$MainText.execCommand('bold');" src="fetstil.gif" />

...klart jag kan köra med en imagebutton (.NET) istället, men hjälper det mig?
Medlem sedan feb. 2005280 inlägg
#3

Jag kan bara kort berätta hur jag hade tänkt.
- Jag hade gjort om img till en asp Image kontroll istället.
- Kört OnDataBound på GridViewn, och i den metoden gjort FindControl på Image och MainText.
- Kallat dom för tex img och txtMain.
- img.Attributes.Add("onclick", "myFunctionToDoBold('" + txtMain.ClientID + "');");
- lagt en simpel javascript snutt myFunctionToDoBold som stylar om till fett.

Notera att jag dock inte gjort såhär på en GridView utan bara på Repeaters, men det borde väl funka tror jag :OO

*edit
de heter visst: OnRowDataBound GridViewRowEventArgs

Medlem sedan mars 20011 346 inlägg
#4

Nu har jag lagt till en bild i Gridview som se ut såhär:

<asp:Image runat="server" ID="IMG1" ImageUrl="images/bold.gif" />

och min textruta

<asp:TextBox ID="MainText" Text='<%# bind("MainText") %>' runat="server" TextMode="MultiLine" />

dessa kontroller ligger i min "EditItemTemplate" varvid jag får:
Objektreferensen har inte angetts till en instans av ett objekt

när jag lägger till "onclick" i "OnRowDataBound"

Samma sak händer när jag lägger den i "RowEditing" med denna kod:

    Protected Sub GVAds_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GVAds.RowEditing
        Dim row As GridViewRow = DirectCast(sender, GridView).Rows(e.NewEditIndex)
        Dim img As Image = DirectCast(row.FindControl("IMG1"), Image)
        Dim txtMain As TextBox = DirectCast(row.FindControl("MainText"), TextBox)
        img.Attributes.Add("onclick", "doCommand('" + txtMain.ClientID + "');")
    End Sub

i vilket läge ska man lägga dit attributet?

Medlem sedan mars 20011 346 inlägg
#5

Sorry freguz...var jag som missade att göra en kontroll på "RowDataBound", resultatet blev såhär :)

Protected Sub GVAds_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GVAds.RowDataBound

            If Not GVAds.EditIndex = -1 Then
                Dim IMG As Image = CType(e.Row.FindControl("IMG1"), Image)
                Dim MT As TextBox = CType(e.Row.FindControl("MainText"), TextBox)
                IMG.Attributes.Add("onclick", "doCommand('" + MT.ClientID + "');")
            End If

End Sub

Bockar å bugar, tack freguz!

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)