2011-01-11 8 views
1

ich eine HtmlInputText in einem DataGrid in einem EditItemTemplate haben, wird diese Steuerung mit einem Wert aus dem die JOB_CODE_ID zwei Werte in dieser Regler auf SqlDataSourceWie kann ich zwei Werte in HtmlInput Steuerung eingestellt

Ich möchte gebunden und die JOB_CODE statt nur JOB_CODE.

Hinweis: Ich möchte nicht JOB_CODE_ID zeigen, speichern Sie es einfach, um es später im Code zu verwenden.

Ich verwendete Tag in den WinForms, um solche Werte zu setzen, aber ich kenne mich nicht ähnlich in ASP.Net.

In meiner Situation, die ich nicht eine versteckte Kontrolle verwenden kann die JOB_CODE_ID dort zu sparen, ist es eine Möglichkeit, zwei Werte in einer HtmlInputText Steuerung eingestellt?

Der Code:

<input type="text" ID="JOB_CODETextBox" runat="server" 
             value='<%# Bind("JOB_CODE") %>' /> 

Vielen Dank im Voraus.

@A_Nablsi, Edit: Die JOB_CODE_ID wird zusammen mit dem Eingabewert in der JS-Funktion verwendet, die beim Anklicken der Eingabe ausgelöst wird.

+0

Die ID, wie in der ID des Textbox? – Drahcir

+0

@Drahcir: Nein, nur ein Wert in meiner Datenquelle, danke ich habe die Frage bearbeitet. – Homam

+0

Möchten Sie die JOB_CODE_ID ausgeben? Wenn nein, können Sie es entweder in der ID der Textbox oder im Namen speichern. – Drahcir

Antwort

1

Sie können ein verstecktes Feld verwenden:

<input type="hidden" value="<%# Bind("JOB_CODE_ID") %>" id="JOB_CODE_ID" /> 

Wenn Sie zusätzliche Daten zu einem bestehenden Namen hinzufügen möchten, können Sie die Html5 Data--Tags verwenden. Diese arbeiten auch in den älteren Browsern:

<input type="text" ID="JOB_CODETextBox" runat="server" value='<%# Bind("JOB_CODE") %>' data-id='<%# Bind("JOB_CODE_ID") %>' /> 

Sie das data-id Attribut zugreifen können, genau wie jedes andere Attribut.

+0

Danke, ich erwähnte, dass ich kein anderes Steuerelement verwenden kann, und HTML5 ist jetzt keine Option. – Homam

+1

Die Verwendung des Datenattributs ist nur der von Html5 empfohlene Weg. Es ist kompatibel mit älteren Browsern (funktioniert sogar auf IE6). – GvS

0

Sie müssen das ItemDatabound-Ereignis des DataGrids abfangen und die beiden Werte zusammen in das Textfeld formatieren. Sie verwenden FindControl, um die Textbox abzurufen, anschließend können Sie die Werte verketten und sie der Text-Eigenschaft zuweisen. Hier ist ein Link zu einem ähnlichen Betrieb auf Code Project:

http://www.codeproject.com/KB/webforms/ItemCreated.aspx

1

Sie könnten den anderen Wert in der Kontrolle des Namen im RowDataBound Ereignisse speichern.

Private Sub gvJOB_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvJOB.RowDataBound 
    If Not (e.Row.RowType = DataControlRowType.DataRow) OrElse (e.Row.Cells(0) Is Nothing) Then 
     Return 
    End If 
    Dim dr As DataRowView = CType(e.Row.DataItem, DataRowView) 
    Dim JOB_CODETextBox As HtmlInputText = CType(e.Row.FindControl("JOB_CODETextBox "), HtmlInputText) 
     JOB_CODETextBox.name = dr("JOB_CODE_ID") 
End Sub 
+0

+1, Danke für die Mühe, ich fand eine andere Lösung. – Homam

1
<input type="text" ID="JOB_CODETextBox" runat="server" value='<%# Bind("JOB_CODE") %>' 
onclick='<%# "YourJSFunction(this," + Eval("JOB_CODE_ID") + ")" %>' /> 

sollte Ihre js Funktion aussehen

function YourFuncName(sender, args){ 
// the args contains the id you need. 
} 
Verwandte Themen