2013-05-30 2 views
0

Это моя первая попытка строить мой собственный сайт, чтобы извинения заранее, если это глупый вопрос ..Update SqlDataSource SelectCommand Client Side

У меня есть GridView, который заполняется из SqlDataSource. У меня также есть элемент управления, который имеет AutopostBack=True для обновления gridview на основе содержимого элемента управления после обновления.

код у меня до сих пор (я изменил реальные имена полей!)

testPage.aspx:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Lookup" 
    DataSourceID="SqlDataSource1"> 
    <Columns> 
     //Column headings removed for clarity 
    </Columns> 
</asp:GridView> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ 
ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [Field1], [Field2], 
[Field3], [Field4], [Field5], [Field6], [Field7], [Field8] FROM [Analysis] 
ORDER BY [Field1], [Field2] DESC, [Field3] DESC"></asp:SqlDataSource> 

testPage.aspx.cs:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Page.IsPostBack) 
     { 
      if (ctl04.Value == null) 
      { 
       SqlDataSource1.SelectCommand = "SELECT [Field1], [Field2], 
       [Field3], [Field4], [Field5], [Field6], [Field7], [Field8] 
       FROM [Analysis] ORDER BY [Field1], [Field2] DESC, [Field3] 
       DESC"; 
      } 
      else 
      { 
       SqlDataSource1.SelectCommand = "SELECT [Field1], [Field2], 
       [Field3], [Field4], [Field5], [Field6], [Field7], [Field8] 
       FROM [Analysis] WHERE [Lookup] IN ('" + 
       ctl04.Text.ToString().Replace(",","','") + "') ORDER BY 
       [Field1], [Field2] DESC, [Field3] DESC"; 

      } 
      gridView1.DataBind(); 
     } 

    } 

Пока это отлично работает при тестировании. Однако я не уверен в том, что если несколько пользователей используют эту страницу, это вызовет проблемы, потому что она работает на стороне сервера. Например, если 1 пользователь обновляет элемент управления, делает ли каждый другой пользователь этот выбор в gridView при первом переходе на страницу?

Может ли кто-нибудь дать указатели на то, как сделать эту работу клиентской стороной, так что выбор в элементе управления не влияет на других пользователей?

+0

Что вы подразумеваете под контролем обновлений? Также удалите дублирующие вызовы gridview1.Databind в вашем коде. – DevelopmentIsMyPassion

+0

Если user1 обновляет элемент управления 'ctl04', он меняет' SqlDataSource1.SelectCommand' только для пользователя1 или всех пользователей? Если в настоящее время меняется 20 пользователей, становится ли это гонка, когда никто не может просматривать их изменения в элементе управления в gridView, поскольку другие пользователи продолжают менять их? – user3357963

+0

Он просто изменится для этого пользователя. – DevelopmentIsMyPassion

ответ

1

Если 1 пользователь обновляет элемент управления, делает ли каждый другой пользователь, что выбор в gridView при первом переходе на страницу?

NO

ASP.net делают новые страницы для каждого пользователя, изменения выберите команду одним пользователем не влияет на других пользователей. если вы получаете команду выбора из базы данных или общего файла и т. д. и обновляете, что одним пользователем будут видны изменения всеми остальными

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