2012-06-21 2 views
0

쿼리 문자열에서 ddb_projectList로 프로젝트 ID를 전달하여 항목을 선택하고 GridView를 채우려고하지만 페이지로드시 첫 번째 추가 항목을 선택할 때 문제가 발생합니다. 여전히 선택된 값을 참고 -1QueryString 값을 드롭 다운 상자의 선택된 항목에 전달

사람이 문제를 해결하는 데 도움이 될 수 있습니다


코드 :

public partial class TasksInProjects : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      //get loged in user id UserID from MembershipUser 
      MembershipUser memberUser = Membership.GetUser(); 
      string StrUserID = memberUser.ProviderUserKey.ToString(); 
      Guid userID = Guid.Parse(StrUserID); 
      hf_userID.Value = userID.ToString(); 

      if (Request.QueryString["projectID"] == null) 
      { 


       //ddl_projects.SelectedValue = Request.QueryString["projectID"]; 

       if (ddl_projects.SelectedValue != "-1") 
       { 

        Guid projectID = Guid.Parse(ddl_projects.SelectedValue); 
        gv_TaskListForUser.DataSource = Task.GetTasksInProjectForUser(userID, projectID); 
        gv_TaskListForUser.DataBind(); 
       } 

      } 
      else 
      { 

       //ddl_projects.Visible = false; 
       //Guid projectID = Guid.Parse(Request.QueryString["projectID"]); 
       //gv_TaskListForUser.DataSource = Task.GetTasksInProjectForUser(userID, projectID); 
       //gv_TaskListForUser.DataBind(); 

       ddl_projects.SelectedItem.Value = Request.QueryString["projectID"]; 
       Guid projectID = Guid.Parse(ddl_projects.SelectedItem.Value.ToString()); 
       gv_TaskListForUser.DataSource = Task.GetTasksInProjectForUser(userID, projectID); 
       gv_TaskListForUser.DataBind(); 
      } 
     } 

    } 

답변

1

대신이 시도 :

ddl_projects.ClearSelection(); 
ddl_projects.Items.FindByValue(Request.QueryString["projectID"]).Selected = true; 

를 보조 노트에

오류가 발생하지 않도록이 줄 바꿈을 권장합니다. 사용자는 종종 URL로 놀기로 결정합니다. 그러므로 피들링을 결정할 경우 가능한 한 많은 검사를하는 것이 가장 좋습니다! 모두가 당신이 달성하려고하는 일의 범위에 따라 다르지만 내가 당신이라면 나는 다음과 같은 최소한 사용하는 것이 검증하기 때문에 그냥 예 :

int projectID = 0; 

// Check the query string is an integer 
if (int.TryParse(Request.QueryString["projectID"], out projectID)) 
{ 
    // You could apply addition checks here, such as check that the project id is valid etc. 
    ListItem projectItem = ddl_projects.Items.FindByValue(projectID.ToString()); 

    // if there is a project item with that value in the drop down list 
    if (projectItem != null) 
    { 
     ddl_projects.ClearSelection(); 
     projectItem.Selected = true; 
    } 
} 
else 
{ 
    // do something, e.g. display friendly error message or whatever else is required 
} 
+0

ddl_projects.Items.FindByValue (projectID.ToString()) .Selected = true; –

+0

거기에 문제가 있습니까? – ThePower

+0

예이 줄에서 예외를 throw합니다. ddl_projects.Items.FindByValue (projectID.ToString()). Selected = true; 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오. 예외 정보 : System.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. –

관련 문제