2016-03-26 29 views
-2

は、これはこれは私のaspx.csはASPバインディングデータバインド:「System.Data.DataRowViewは」名前「評価」でプロパティが含まれていません

ファイルである

<form runat="server"> 

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" RowStyle-BackColor="#A1DCF2" Font-Names = "Arial" Font-Size = "10pt" 
HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" DataKeyNames="FilePath" > 
<Columns> 
    <asp:BoundField DataField="FileName" HeaderText="FileName" /> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <object type="application/x-shockwave-flash" data='dewplayer-vol.swf?mp3=<%#Eval("FilePath") %>' 
       width="240" height="20" id="dewplayer"> 
       <param name="wmode" value="transparent" /> 
       <param name="movie" value='dewplayer-vol.swf?mp3=<%#Eval("FilePath") %>' /> 
      </object> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField ItemStyle-HorizontalAlign="Center"> 
        <ItemTemplate> 
         <asp:LinkButton ID="lnkDownload" runat="server" Text="Download" OnClick="lnkDownload_Click"></asp:LinkButton> 
        </ItemTemplate> 
       </asp:TemplateField><asp:TemplateField HeaderText="Song Ratings"> 
     <ItemTemplate> 
      <asp:Rating ID="Rating1" OnChanged="OnRatingChanged" runat="server" 
       StarCssClass="Star" WaitingStarCssClass="WaitingStar" EmptyStarCssClass="Star" 
       FilledStarCssClass="FilledStar" CurrentRating='<%# Eval("Rating") %>'> 
      </asp:Rating> 
     </ItemTemplate> 
    </asp:TemplateField></Columns></asp:GridView></form> 

まで私のHTMLマークであります.NETのGridView

  protected void Page_Load(object sender, EventArgs e) 
    { 




     if (!IsPostBack) 
     { 
      BindGridviewData(); 


      GridView1.DataSource = GetData("SELECT SongId, FileName, ISNULL((SELECT AVG(Rating) FROM SongRating WHERE SongId = SongTable.SongId), 0) Rating FROM SongTable"); 
      GridView1.DataBind(); 
     } 


    } 

    private static DataTable GetData(string query) 
    { 
     DataTable dt = new DataTable(); 
     string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(constr)) 
     { 
      using (SqlCommand cmd = new SqlCommand(query)) 
      { 
       using (SqlDataAdapter sda = new SqlDataAdapter()) 
       { 
        cmd.CommandType = CommandType.Text; 
        cmd.Connection = con; 
        sda.SelectCommand = cmd; 
        sda.Fill(dt); 

       } 
      } 
      return dt; 
     } 
    } 

//挿入とSQL Serverデータベースのテーブルにユーザーの評価を保存

protected void OnRatingChanged(object sender, RatingEventArgs e) 
    { 
     int rowIndex = ((sender as Rating).NamingContainer as GridViewRow).RowIndex; 
     int songId = Convert.ToInt32(GridView1.DataKeys[rowIndex].Value); 
     string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(constr)) 
     { 
      using (SqlCommand cmd = new SqlCommand("INSERT INTO SongRating VALUES(@SongId, @Rating)")) 
      { 
       cmd.CommandType = CommandType.Text; 
       cmd.Parameters.AddWithValue("@SongId", songId); 
       cmd.Parameters.AddWithValue("@Rating", e.Value); 
       cmd.Connection = con; 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
       con.Close(); 
      } 
     } 
     Response.Redirect(Request.Url.AbsoluteUri); 
    } 



    private void BindGridviewData() 
    { 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString()); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("select * from SongTable", con); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 
     con.Close(); 
     GridView1.DataSource = ds; 
     GridView1.DataBind(); 

    } 

はどこ、この

SELECT SongIdような何かを私はあなたの選択リストに列「評価」を言及しなかった@abhi

答えて

0

ハイテクに感謝asp.netに新しいです発生したエラーです、ファイル名、ISNULL(AVG(評価)、0)SongTableから評価がSongIdでSongRating.SongId = SongTable.SongIdグループにSongRatingに参加左として、ファイル名

・ホープこれはあなたの例外を1として..

+0

申し訳ありませんが、私はあなたが質問を指定してください得ることができません。 – abhi

+0

あなたは今直面しているエラーは何ですか? –

0

をお手伝いしますそれは言う:

上記の例外は、Web コントロールの指定されたデータ項目が、返されたDataRowViewのスキーマに存在しない場合に発生します。 つまり、あなたがデータバインドさ コントロールで指定した列は、だから、おそらくBindGridviewData方法でこのことから

select * from SongTable 

をご選択クエリを変更するデータベース

から返されたデータには存在しませんこれまで

SELECT SongId, FileName, ISNULL((SELECT AVG(Rating) 
FROM SongRating WHERE SongId = SongTable.SongId), 0) as Rating FROM SongTable 
関連する問題