2010-11-19 15 views
2

için bir UserID göndermez Verilerimi görüntülemek için temel ızgara görünümü denetimlerini kullanmayı öğrenmeye çalıştığım anda yaşıyorum..NET GridView güncelleştirmesi, SQL Query

Başlamak için her şeyi aspx sayfasından yapmaya çalıştım ve işleri kendim için daha basit tutmaya çalıştım.

Her şey yolunda çalışıyor, ancak bir güncelleştirme sorgusu kullanmayla ilgili bir sorun yaşıyorum.

İstenilen sonuç, kullanıcı adını ve ardından bir düzenleme düğmesini gösterecek olan basit 2 sütun tablosudur.

Sorun şu ki, kullanıcı kimliğini sütunlara dahil etmezseniz, sorgu hiçbir şeyi güncelleştirmez.

Bu

benim SqlDataSource kodudur:

<asp:SqlDataSource 
    ID="sqlDataSource" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:conn %>" 
    SelectCommand="SELECT UserID, Name FROM tblUsers;" 
    UpdateCommand="UPDATE tblUsers SET Name = @Name WHERE UserID = @UserID"> 
    <UpdateParameters> 
     <asp:Parameter Name="Name" /> 
     <asp:Parameter Name="UserID" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

Ve bu benim GridView geçerli:

<asp:GridView 
    ID="Clients" 
    DataSourceID="sqlDataSource" 
    runat="server" 
    AllowPaging="true" 
    AllowSorting="true" 
    PageSize="25" 
    AutoGenerateColumns="False" 
    DataKeyNames="UserID"> 
    <Columns> 
     <asp:BoundField DataField="Name" HeaderText="Users Name" SortExpression="Name" /> 
     <asp:CommandField EditText="Edit" ShowEditButton="true" /> 
    </Columns> 
</asp:GridView> 

ben sayfasına gidin ve düzenlemek, bir metin kutusuna Ad alanı değişimleri tıklatın ve Güncellemeyi seçebilir veya beklendiği gibi iptal edebilirim.

Ancak, yukarıdaki kodla, güncelleştirmeyi tıkladığımda, SQL'de herhangi bir UserID alamadığı için verilerde hiçbir değişiklik yapılmadan yeniden normal tabloyu görüntüler.

Bununla birlikte, <Columns>'a <asp:BoundField DataField="UserID" HeaderText="Users ID" SortExpression="UserID" /> eklerseniz, çalışır.

UserID sütununu tabloya eklemeden bu işi yapmamın bir yolu var mı?

cevap

3

Sen OldValuesParameterFormatString kullanabilirsiniz:

<asp:SqlDataSource 
    ID="sqlDataSource" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:conn %>" 
    OldValuesParameterFormatString="original_{0}" 
    SelectCommand="SELECT UserID, Name FROM tblUsers;" 
    UpdateCommand="UPDATE tblUsers SET Name = @Name WHERE UserID = @original_UserID"> 
    <UpdateParameters> 
     <asp:Parameter Name="Name" /> 
     <asp:Parameter Name="original_UserID" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 
1

Sütunu ekleyin ve Visible değerini False olarak ayarlayın.

<asp:BoundField DataField="UserID" Visible="False" /> 
+0

Ben sadece ve maalesef çalışmıyor denedim. Zaman ayırdığınız için teşekkürler! –