2013-02-11 2 views
2

Я следующий код позади:Populate GridView из CodeBehind

[WebMethod] 
public static string GenerateHtml(string id) 
{ 
    //return id; 
    DataView vwMain2; 
    try 
    { 
     DbProviderFactory dbf = DbProviderFactories.GetFactory(); 
     using (IDbConnection con = dbf.CreateConnection()) 
     { 
      string sSQL; 
      sSQL = "select top 20    " + ControlChars.CrLf 
       + " ASSISTING_FILE_ID, DATE_ENTERED, CLIENT_CLAIM_NUM, PRIMARY_INSURED, PRIMARY_CLAIMANT, LOB_ID, FILE_STATUS, BRANCH_NAME," + ControlChars.CrLf 
       + " OWNERS_FIRST_NAME, OWNERS_LAST_NAME, OWNERS_NAME, OWNERS_EMAIL, OWNERS_OFFICE_PHONE, OWNERS_FAX_PHONE, OWNERS_CELL_PHONE" + ControlChars.CrLf 
       + " from vwFILES_DetailViewWithOwners" + ControlChars.CrLf 
       + " where 1 = 1     " + ControlChars.CrLf; 
      //+ " where 1 = 1 and WEB_USER_ID = '" + Security.USER_ID.ToString() + "'" + ControlChars.CrLf; 
      using (IDbCommand cmd = con.CreateCommand()) 
      { 
       cmd.CommandText = sSQL; 

       using (DbDataAdapter da = dbf.CreateDataAdapter()) 
       { 
        ((IDbDataAdapter)da).SelectCommand = cmd; 
        using (DataTable dt = new DataTable()) 
        { 
         da.Fill(dt); 
         vwMain2 = dt.DefaultView; 
         GridView2.DataSource = vwMain2; 

          GridView2.DataBind(); 

        } 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex.Message); 
     //lblError.Text = ex.Message; 
    } 

} 

У меня есть следующие в моей странице ASPX:

<asp:GridView ID="GridView2" runat="server"> 
       </asp:GridView> 

Когда я пытаюсь ссылаться GridView2 в моем коде позади, он говорит , «Ссылка на объект требуется для нестатического поля, метода или свойства GridView2».

Как я могу решить эту проблему, чтобы создать вид сетки при вызове GenerateHtml, или есть ли лучший способ?

+0

Какая линия бросает эту ошибку? Это происходит, когда вы пытаетесь назначить представление источнику данных или это происходит, когда вы вызываете DataBind? – dave823

+0

Как общее замечание. Обязательно используйте Sql Parameters вместо прямого ввода строк в ваш SQL-запрос. В противном случае кто-то может сделать «где 1 = 1», а sql-inject атакует ваш db. – sircodesalot

+0

@ dave823 Это происходит в обеих ссылках на 'GridView2'. – user1477388

ответ

3

У вас не будет ссылки на какой-либо элемент страницы при вызове WebMethod. Помните, вы вызываете статический метод . Для доступа к любым элементам уровня страницы в коде необходимо пройти через жизненный цикл .NET, где происходит все «волшебство».

Взгляните на этот вопрос С.О., чтобы узнать, как сделать то, что вы хотите: How to update an datagrid with webmethods

+0

Итак, я просмотрел ссылку (и ссылки внутри нее), и похоже, что обновление сетки через веб-метод невозможно. – user1477388

+0

Точно. Но этот вопрос покажет вам, как это сделать. –

+0

Это показывает мне, как это сделать с помощью jqGrid, но не с GridView в ASP.NET. – user1477388

Смежные вопросы