我很難弄清楚這一點。希望這里有人可以告訴我我做錯了什么。我正在嘗試使用當前登錄的用戶填充 Gridview 中的“用戶名”列。我的最終目標是使用在同一 Gridview 中編輯“userEntry”列的用戶填充資料庫中的“userName”列。我想知道是誰進行了更改并將該用戶記錄在資料庫表“userEntry”的“userName”列中。
這就是我所擁有的。我創建了一個示例資料庫 (sampleDB),并在資料庫中創建了一個簡單的表“userEntry”。請參閱下面的示例資料庫腳本。
USE sampleDB;
GO
CREATE TABLE userEntry(
id INT IDENTITY
, someText VARCHAR(20)
, userName VARCHAR(20)
);
GO
INSERT INTO userEntry(someText, userName)
VALUES('Hello', 'John')
, ('Ohla', 'Sam');
GO
SELECT *
FROM userEntry;
GO
接下來,我創建了一個名為“getUser1”的簡單 ASP.NET Web 應用程式 (.NET Framework)。然后我添加了一個 GridView 和一個 SQL 連接字串以將 GridView 鏈接到資料庫表。這是我在 ASP.NET Web 應用程式中使用的代碼。
默認.aspx 頁面:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="getUser1._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="id" Width="328px">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="someText" HeaderText="someText" SortExpression="someText" />
<asp:BoundField DataField="userName" HeaderText="userName" SortExpression="userName" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:conString %>"
SelectCommand="SELECT * FROM [userEntry]"
UpdateCommand="UPDATE [userEntry] Set [someText]=@someText, [userName]=@userName Where [id]=@id"
DeleteCommand="DELETE FROM [userEntry] Where [id]=@id"></asp:SqlDataSource>
</div>
</asp:Content>
Default.aspx.cs 頁面:
using System;
using System.Web.UI;
using System.Security.Principal;
namespace getUser1
{
public partial class _Default : Page
{
public object DataField { get; private set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataField.userName.Text = WindowsIdentity.GetCurrent().Name;
}
}
}
}
Web.config 頁面:
<connectionStrings>
<add name="conString" connectionString="Data Source=dsouthres18v;Initial Catalog=sampleDB;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
所以,這就是我嘗試過的(將“if(!IsPostBack)”部分添加到“Default.aspx”頁面后面的代碼中。但它似乎不起作用。顯然我不知道如何獲得當用戶編輯 GridView 并單擊 GridView 中的“更新”按鈕時,“userName”列中的用戶。
我可以讓它在一個簡單的文本框上作業,創建一個新條目,但我不知道對 GridView 中的“asp:BoundField DataField”做同樣的事情。我希望這是有道理的,我希望有人能讓我走上正確的道路來解決這個問題。提前致謝。
uj5u.com熱心網友回復:
好的,在設計視圖中右鍵單擊Gridview,調出屬性表。
這個:

您可以雙擊該區域來創建事件。
然后,說這段代碼:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// string strCurrentUser = WindowsIdentity.GetCurrent().Name;
string strcurrentUser = "zoo";
e.NewValues["userName"] = strcurrentUser;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/464854.html
上一篇:子字串長度不能小于零
