Pregunta

Estoy usando VS2005 C# y SQL Server 2005.

Tengo una vista de gridView y esta es mi declaración de actualización actual:

UpdateCommand="UPDATE [UserData] SET [UserID] = @UserIDe, [Username] = @Username, [Age] = @Age, [MemberType]=@MemberType WHERE [UserID] = @UserID

La declaración anterior actualizará la fila de usuario identificada por UserID.

Sin embargo, me gustaría la variable UserID ser editable, por lo tanto, si edito mi UserID Al actualizar la tabla, la fila no se actualizará porque esa particular UserID puede no existir.

¿Cómo puedo usar el UpdateCommand y actualice la fila identificando el row number de la fila editada?

¿Fue útil?

Solución

Esto se puede hacer rastreando todos los valores originales. Visual Studio hará esto por usted si usa el asistente para generar sus declaraciones SQL, y selecciona la opción "Usar concurrencia optimista" como se muestra aquí.

Se puede encontrar un ejemplo del SQL generado aquí.

Muestra de código de la página:

UPDATE Products SET
    ProductName = @ProductName,
    UnitPrice = @UnitPrice
WHERE
    ProductID = @original_ProductID AND
    ProductName = @original_ProductName AND
    UnitPrice = @original_UnitPrice

Al leer el artículo, debe poder aplicar el mismo tipo de consulta a su situación, ya que el uso de los valores originales debería permitirle evitar la necesidad de una clave primaria. Sin embargo, debo señalar que tener una clave de identificación editable es un diseño muy malo, ya que no puede garantizar que sea único. Puede finalizar fácilmente la actualización de más de un registro, junto con una gran cantidad de otros problemas.

Otros consejos

Debajo del GridView hay que la tabla necesita tener al menos una identificación única para actualizar un registro. Si necesita editar el IDEDID, debe tener una clave fija en su tabla. Al menos nombrarlo como tecla de usuario. Creo que GridView solo pudo editar y actualizar datos siempre que tenga un puntero a esa fila. De lo contrario, elimine el ID de usuario de la colección Datakeynames y asigna con las columnas que cree que son únicas y no cambia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top