2014-01-07 31 views
0

我有兩個頁面一個MasterPage.master和默認我認爲這個錯誤的兩個表[0]我在母版頁中使用,掌握一個數據表的輪詢和默認我使用數據表顯示新聞的時候在頁面默認和運行刪除數據表是用出來的錯誤正確的,當使用兩個數據表我是看到錯誤如何解決System.ArgumentOutOfRangeException

當運行defualt.aspx這個錯誤,請參閱:

Specified argument was out of the range of valid values. 
Parameter name: index 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. 
Parameter name: index 

Source Error: 


Line 88:    tbl.BorderWidth = 0; 
Line 89:    tbl.Attributes.Add("Style", "text-align:right"); 
Line 90:    ImageButton ButtonPolls = (ImageButton)tbl.Controls[0]; 
Line 91:    ButtonPolls.ImageUrl = "../images/poll/CastVote.jpg"; 

Line 92:   

該代碼使用MasterPage.master

string strSQL = "select QuestionText from TPollQuestions where Iscurrent=1 and Isarchived=0"; 
     string cmdtext = ""; 
     SqlConnection conn = Conn; 
     Pollcontrol1.CanVote = true; 

     if (conn.State == System.Data.ConnectionState.Closed) 
      conn.Open(); 

     cmdtext = "select QuestionText from TPollQuestions where Iscurrent=1 and Isarchived=0"; 
     cmd = new SqlCommand(cmdtext, conn); 
     Pollcontrol1.PollQuestion = cmd.ExecuteScalar().ToString(); 
     conn.Close(); 
     cmdtext = 
      "select optionID,PollID,OptionText,Votes from TPollOptions where pollID in(select PollID from TPollquestions where Iscurrent=1 and Isarchived=0)"; 
     SqlDataAdapter da = new SqlDataAdapter(cmdtext, conn); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 

     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      Pollcontrol1.AddPollAnswer(Convert.ToInt32(dt.Rows[i]["pollID"]), Convert.ToInt32(dt.Rows[i]["optionID"]), dt.Rows[i]["optionText"].ToString(), Convert.ToInt32(dt.Rows[i]["votes"])); 
     } 

     TableCell tbl = (TableCell)Pollcontrol1.Controls[0].Controls[Pollcontrol1.Controls[0].Controls.Count - 1].Controls[0]; 
     tbl.BorderWidth = 0; 
     tbl.Attributes.Add("Style", "text-align:right"); 
     ImageButton ButtonPolls = (ImageButton)tbl.Controls[0]; 
     ButtonPolls.ImageUrl = "../images/poll/CastVote.jpg"; 

這個代碼的Default.aspx 這個數據表作秀消息的時候刪除的GetData(STR)運行無誤,並提供超時錯誤

PagedDataSource pgsource = new PagedDataSource(); 
int findex, lindex; 
DataRow dr1; 
static string str = "select * from TNews where 1=1"; 
protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 
     //CurrentPage = 0; 
GetData(str); 
    } 
} 

DataTable GetData(string str) 
{ 
    DataTable dtable1= new DataTable(); 

    SqlConnection Conn; 
    SqlCommand Cmd; 

    Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["bakerConnectionString"].ToString()); 
    Cmd = new SqlCommand(); 
    Conn.Open(); 
    Cmd.Connection = Conn; 

    Cmd.CommandText = str; 

    SqlDataAdapter dap1= new SqlDataAdapter(Cmd); 
    DataSet ds1 = new DataSet(); 
    dap1.Fill(ds1, "ds1"); 
    pgsource.DataSource = ds1.Tables[0].DefaultView; 
    DataBind(); 
    return ds1.Tables[0]; 
} 

回答

0

望着錯誤消息,我會猜,你的問題就在這裏:

Line 90:    ImageButton ButtonPolls = (ImageButton)tbl.Controls[0]; 

此外,我看到你使用基於索引的檢索控件相當多,這是不可取的。相反,使用Control.FindControl方法檢索子控件(當然,檢查null)。

假設您的ImageButton的編號爲_imgButton。從表中使用檢索它:

var imgButton = tbl.FindControl("_imgButton") as ImageButton; 
if(imgButton != null) 
{ 
    // your logic here... 
} 
+0

感謝IAM使用 IAM不要ID按鈕 – user3166739

+0

@ user3166739,我很抱歉但我不明白你想說什麼...... – RePierre