2

私は趣味のプログラマーで、最近まで ASP クラシックしか使用していませんでした。Razor 構文を使用して、ASP Classic からいくつかのコードを複製しようとしています。

私が使用している w3schools の ASP クラシック コードは以下のとおりです。

<%
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"

set rs = Server.CreateObject("ADODB.recordset")
sql="SELECT Companyname, Contactname FROM Customers"
rs.Open sql, conn
%>

<table border="1" width="100%">
  <tr>
  <%for each x in rs.Fields
  response.write("<th>" & x.name & "</th>")
  next%>
  </tr>
  <%do until rs.EOF%>
  <tr>
  <%for each x in rs.Fields%>
    <td><%Response.Write(x.value)%></td>
  <%next
  rs.MoveNext%>
  </tr>
<%loop
rs.close
conn.close
%>
</table>

ほとんどの人がウェブグリッドを使用すると言うでしょう。はい、これを実行しましたが、非常に遅いので、これと比較してトラブルシューティングを試みています。カミソリでの私のコードは次のとおりです

  var SelectCommand1 = "DECLARE @cols AS NVARCHAR(MAX), @query  AS NVARCHAR(MAX); " +
                       "SET @cols = STUFF((SELECT  ',' + QUOTENAME(tblTests.Name ) " +
                            "FROM tblTestsInEvents c INNER JOIN tblTests ON c.Test_ID = tblTests.Test_ID " +
                            "WHERE c.Event_ID = @0 order by c.TestsInEvents_ID FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') " +
                       "set @query = 'SELECT Car_Number, First_Name, Last_Name, ' + @cols + ' " +
                          "from ( select First_Name, Last_Name, tblTestsLog.Driver_ID, Name, CorrectedTime, tblDriversInEvents.Car_Number "+
                                  "FROM tblTests INNER JOIN "+
                                      "tblTestsLog ON tblTests.Test_ID = tblTestsLog.Test_ID INNER JOIN "+
                                      "UserProfile ON tblTestsLog.Driver_ID = UserProfile.UserId INNER JOIN "+
                                      "tblDriversInEvents ON UserProfile.UserId = tblDriversInEvents.Driver_ID AND tblTestsLog.Event_ID = tblDriversInEvents.Event_ID) "+
                       "x pivot ( sum(CorrectedTime) for Name in (' + @cols + ') ) p ' "+
                       "execute(@query)";  
  var SelectedData1 = db.Query(SelectCommand1, EventID);

インライン コードは次のとおりです。

@{//grid.GetHtml()
  <text><table></text>
  foreach (var x in SelectedData1)
  {
    @:<tr>
    foreach (var y in x.Fields)
    {
      <text><td>@y.value</td></text>
    }
    @:</tr>

  }
}
</table>

x.Fields は現在失敗しており、同等のものを見つけることができません。どんなアドバイスやヒントも素晴らしいでしょう。ありがとう

4

2 に答える 2

0

さらに検索を行った後、これが最良の解決策であることがわかりました。この時点まで私を導いてくれた @IUnknown に感謝します。

<table><tr>
  @{
    //This populates the column headings
    List<string> ColHeads = new List<string>();
    var col = SelectedData1.ElementAt(0);
    foreach(var x in col.Columns)
    {
      ColHeads.Add(x);
      <td>@x</td>
    }}
</tr>
  @{//This populates each row
    foreach (var tblrow in SelectedData1)
    {@:<tr>
      foreach (var rowcolumn in ColHeads)
      {
      <td>@tblrow[rowcolumn]</td>
      }
      @:</tr>
    }}
</table>

基本的に、見出し行を読み込んでいたときに、すべての列ヘッダーを含むリストを作成しました。次に、そのリストを使用してクエリからデータを取得し、テーブルにデータを入力しました

于 2013-07-18T04:03:26.877 に答える