/ / C # DetailsView uzyskaj wartość - c #, asp.net, formularze internetowe

C # DetailsView uzyskać wartość - c #, asp.net, formularze internetowe

Próbuję zdobyć userID z mojej bazy danych umieść go w DetailsView i uzyskaj wartość i ustaw etykietę.

Pojawia się błąd, że ciąg jest pusty.

public void SendButton_Click(object sender, EventArgs e)
{
labelID.Text = DetailsView1.Rows[0].Cells[1].Text;
strVariable = labelID.Text;

System.Diagnostics.Debug.Write("variabelen: " + strVariable);
System.Guid g =  new Guid(strVariable);
SqlDataSource1.InsertParameters[3].DefaultValue = g.ToString();
SqlDataSource1.Insert();
}


<asp:Label ID="labelID"  Name="LabelID" runat="server"></asp:Label>

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
DataSourceID="SqlDataSource2" Height="50px" Width="125px"
DefaultMode="Edit">
<Fields>
<asp:BoundField DataField="UserId" HeaderText="UserId"
SortExpression="UserId" />
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT UserId FROM aspnet_Users WHERE (UserName = "bo")">

</asp:SqlDataSource>

Zauważ, że labelID.Text jest w zdarzeniu przycisku kliknięcia i że Detailview Ładowanie (grid) następuje, gdy użytkownik jest zalogowany. Identyfikator użytkownika zostanie załadowany detailsview1 gdy użytkownik jest zalogowany.

Jak mogę to naprawić?

Odpowiedzi:

3 dla odpowiedzi № 1

Trudno powiedzieć dokładnie, na czym polega problem bez większego kontekstu, ale zakładam, że tak DetailsView1.Rows[0].Cells[1].Text nie jest poprawną lokalizacją w DetailsViewszukać identyfikatora użytkownika. Możesz spróbować ustawić punkt przerwania dla tej linii w Visual Studio i przechodzić przez wiersze i komórki w bezpośrednim oknie, aby znaleźć odpowiednią lokalizację.

Jeśli możesz podać kod używany jako źródło danych dla DetailsView, a także definicję DetailsView, która byłaby pomocna.

EDYCJA W OPARCIU O NOWY KOD PRZYKŁADOWY:

Kiedy uruchomię twój przykładowy kod, ( DetailsView1.Rows[0].Cells[1].Controls[0] as TextBox ).Text daje mi wartość identyfikatora użytkownika. Musisz wejść do Controls kolekcja na Cells[1] ponieważ DetailsView renderuje powiązane pola jako TextBoxes.