2014-07-16 2 views
0

내 코드는 오류 발생 : 형식이 잘못입력 문자열이 올바른 형식 때

입력 문자열

번호 :

protected void btnGenerateReport_Click(object sender, EventArgs e) 
    { 
     dtRoom.Columns.Add(new DataColumn("ID", typeof(string))); 
     dtRoom.Columns.Add(new DataColumn("RecievingDate", typeof(string))); 
     dtRoom.Columns.Add(new DataColumn("FromMobileNo", typeof(string))); 
     dtRoom.Columns.Add(new DataColumn("Message", typeof(string))); 
     dtRoom.Columns.Add(new DataColumn("IsComplaint", typeof(short))); 
     // bool var = false; 
     for (int i = 0; i <= 5; i++) 
     { 
      //drw = dtRoom.NewRow(); 
      DropDownList IsValid = (DropDownList) GridViewSmsComplaints.Rows[i].FindControl("ddlValidity"); 
      if (IsValid.SelectedValue == "1") 
      { 
       int ID = Convert.ToInt32(GridViewSmsComplaints.Rows[i].Cells[0].Text); 
       ManageRecievedMessage mngRecMsg = new ManageRecievedMessage(); 
       mngRecMsg.UpdateSmsComplaintValidity(ID, 1); 

       //var = true; 
       DataRow datarw = null; 
       //dtRoom = new DataTable(); 
       datarw = dtRoom.NewRow(); 

        datarw[0] = GridViewSmsComplaints.Rows[i].Cells[0].Text; 
        datarw[1] = GridViewSmsComplaints.Rows[i].Cells[1].Text; 
        datarw[2] = GridViewSmsComplaints.Rows[i].Cells[2].Text; 
        datarw[3] = GridViewSmsComplaints.Rows[i].Cells[3].Text; 
        datarw[4] = Convert.ToInt16(GridViewSmsComplaints.Rows[i].Cells[4].Text); 

       dtRoom.Rows.Add(datarw); 

는이 광고에 오류가 발생 :

datarw[4] = Convert.ToInt16(GridViewSmsComplaints.Rows[i].Cells[4].Text); 

드롭 다운에서 선택하기 때문에 1부터 4까지는 datarw 4를 전달해야합니다. 당신의 Value 1 만 Text 그것은 "유효"입니다에 해당하기 때문에

<asp:DropDownList ID="ddlValidity" runat="server"> 
          <asp:ListItem Value="-1" Text="-Select-"></asp:ListItem> 
          <asp:ListItem Value="1" Text="Valid"></asp:ListItem> 
          <asp:ListItem Value="0" Text="Invalid"></asp:ListItem> 
         </asp:DropDownList> 
+0

당신에게 디버그를하고 실제 값이 무엇을 참조하십시오 따라서과 같이, 대신 드롭 다운에서 Value를 사용하도록 코드를 변경해야합니까? –

+0

예 "1" 1 따옴표 포함 – user3518032

답변

1

귀하의 문제입니다. 숫자가 아니며 오류가 발생하는 Text을 전달 중입니다.

datarw[4] = Convert.ToInt16(IsValid.SelectedValue); 
관련 문제