Как получить значение метки в edititemplate (формы) для кода за файлом? - PullRequest
0 голосов
/ 18 ноября 2011

Я пытаюсь перенести значение текста, введенного в метке "telephoneidLabel", в мой файл кода для установки значения в предложении where моего объекта sqlcommand. как мне это сделать? шаблон редактирования находится внутри формы.

 <EditItemTemplate >   
        telephoneid:
        <asp:Label ID = "telephoneidLabel" runat="server" Text='<%# Bind ("telephoneid")%>' />

Ответы [ 3 ]

1 голос
/ 18 ноября 2011

Как только вы поймаете правильный предмет, вы можете использовать метод FindControl для Предмета, что-то вроде этого:

var myLabel = item.FindControl("telephoneidLabel") as Label;

if(myLabel != null)
{
  var myText = myLabel.Text;
}

способ получения объекта item зависит от того, каков ваш код,если вы делаете цикл для всего элемента управления formview или получаете editItem или selectedItem и т. д., но FindControl, и его использование всегда одинаково.

0 голосов
/ 18 ноября 2011

Предполагая, что строка находится в режиме редактирования, вы сможете получить значение из элемента управления следующим образом:

//the row that's being edited
GridViewRow row = GridView1.Rows[0];

if (row.RowState == DataControlRowState.Edit)
{
    Label lblCtrl = row.FindControl("Label1") as Label;
    if (lblCtrl != null)
    {
        string text = lblCtrl.Text;
    }
}

Мне интересно, возможно, было бы лучше использовать для этого ключ данных:

<asp:GridView ID="GridView1" runat="server" DataKeyNames="SomeColumn" ...>

Код-за:

string someValue = (string)GridView1.DataKeys[0]["SomeColumn"];
0 голосов
/ 18 ноября 2011

Это довольно легко сделать - теперь двустороннее связывание должно автоматически сделать это за вас, предполагая, что на SqlDataSource, который вы используете в качестве источника данных для вашего GridView. Вот некоторый код, который у меня есть на SqlDataSource:

UpdateCommand="UPDATE [prov] SET provname=@provname, addr=@addr, tele=@tele WHERE provID=@provID "   >      
    <UpdateParameters>
        <asp:ControlParameter ControlID="dgProviders" Name="provID" PropertyName="SelectedValue" />
        <asp:Parameter Name="login" />
        <asp:Parameter Name="password" />
        <asp:Parameter Name="username" />
        <asp:Parameter Name="contact_email" />
        <asp:Parameter Name="bar_number" />
    </UpdateParameters>

Теперь, если вы хотите добраться до объекта метки, то в обработчике событий Approproate вы можете использовать следующий код в качестве примера:

Protected Sub dgProviders_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles dgProviders.RowCommand
    Select e.CommandName
        Case "Search"
            Dim strProvName As String = CType(Me.dgProviders.HeaderRow.FindControl("txtSearchName"), TextBox).Text
            If strProvName = String.Empty Then
                Me.lblResults.Text = "<span style=""color:maroon"">You have to enter a search term:  part of the name to do a search.</span><br />"
            Else
                Me.sqlProvList.SelectParameters.Clear()
                If strProvName <> String.Empty Then
                    Me.sqlProvList.SelectCommand = "SELECT provID, provname, addr, tele FROM prov WHERE [provname] LIKE '%' + @username + '%' ORDER BY [provname]"
                    Me.sqlProvList.SelectParameters.Add("username", DbType.String, strProvName)
                End If
                Me.dgProviders.PageIndex = 0
                Session("Select") = Me.sqlProvList.SelectCommand
            End If
    End Select
End Sub

Это кнопка "Поиск", которая у меня есть, получая значения из текстовых полей в строке заголовка сетки данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...