2011-10-26 2 views
0

내 데이터베이스에서 userID을 얻으 려하면 DetailsView에 넣고 값을 가져 와서 레이블로 설정하십시오.C# DetailsView 값을 얻으십시오

Im이 문자열이 비어 있다는 오류가 발생합니다.

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> 

참고 labelID.Text가 클릭 버튼 이벤트와 Detailview (그리드) 로딩이 사용자가 로그인 할 때입니다. 사용자 ID GET의로드 detailsview1에서 사용자가 로그인 될 때입니다.

어떻게 해결할 수 있습니까?

+1

로그인 한 사용자의 ID를 가져 오시겠습니까? 그렇다면'User.Identity.Name'을 시도하십시오. – jrummell

답변

3

더 많은 컨텍스트가없이 문제가 무엇인지 정확하게 말하기는 어렵지만 DetailsView1.Rows[0].Cells[1].Text은 DetailsView 내에서 사용자 ID를 찾는 적절한 위치가 아니라고 가정합니다. Visual Studio에서 해당 줄에 중단 점을 설정하고 직접 창에서 행과 셀을 단계별로 실행하여 적절한 위치를 찾을 수 있습니다.

유용하게 사용할 수있는 DetailsView의 정의뿐만 아니라 DetailsView의 데이터 소스로 사용하는 코드를 제공 할 수 있다면. 새로운 샘플 코드를 기반으로

편집 : 샘플 코드를 실행하면, (DetailsView1.Rows[0].Cells[1].Controls[0] as TextBox).Text 나에게 사용자 ID 값을 제공

. DetailsView가 바운드 필드를 TextBox로 렌더링 할 때 Cells[1]Controls 컬렉션으로 이동해야합니다.

+1

+1, 맞습니다. – jadarnel27