所以我有一個與GridView的C#頁面。出於某種原因,添加標籤和模板進行編輯後,當我點擊編輯列中的更新按鈕時,GridView消失,沒有任何記錄被更改。我知道我需要在編輯框中的數據綁定一旦用戶點擊更新,但我不知道如何。任何人都可以提出建議嗎?GridView消失更新按鈕單擊,不更新記錄
這是我的代碼。
public partial class CMSWebParts_Custom_Development_DevWebPart :
CMSAbstractWebPart
{
public string paramId;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["RefUrl"] = Request.UrlReferrer.ToString();
}
string urlString = Request.UrlReferrer.ToString();
paramId = HttpUtility.ParseQueryString(urlString).Get("Theid");
DispatchNumberLabel.Text = getDispatchNumber();
//TerminalLabel.Text = getTerminal();
DispatchInfoIdLabel.Text = getDispatchInfoId();
DriverNameLabel.Text = getDriverName();
}
protected string getDispatchInfoId()
{
string result = DriverDropDownList.SelectedValue;
return result;
}
protected string getDispatchNumber()
{
string result = paramId;
return result;
}
protected string getTerminal()
{
string result;
string connectionString = "";
using (var con = new SqlConnection(connectionString))
{
var sql = "Select Terminal from Form_IntranetSharpTransit_DispatchInfo where ([Dispatch] = @Dispatch)";
using (var cmd = new SqlCommand(sql, con))
{
cmd.Parameters.AddWithValue("@Dispatch", getDispatchNumber());
con.Open();
result = (string)cmd.ExecuteScalar();
}
}
return result;
}
protected string getDriverName()
{
string result;
string connectionString = "";
using (var con = new SqlConnection(connectionString))
{
var sql = "Select Driver from Form_IntranetSharpTransit_DispatchInfo WHERE ([DispatchInfoID] = @DispatchInfoId)";
using (var cmd = new SqlCommand(sql, con))
{
cmd.Parameters.AddWithValue("@DispatchInfoId", getDispatchInfoId());
con.Open();
result = (string)cmd.ExecuteScalar();
}
}
return result;
}
}
這裏是我的代碼背後。
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="~/CMSWebParts/Custom/Development/DevWebPart.ascx.cs"
Inherits="CMSWebParts_Custom_Development_DevWebPart" %>
<%--<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
}
</script>--%>Dispatch Number:
<asp:Label ID="DispatchNumberLabel" runat="server"></asp:Label>
<p>
Terminal:
<asp:Label ID="TerminalLabel" runat="server"></asp:Label>
</p>
<p>
Current
Dispatch Info ID:
<asp:Label ID="DispatchInfoIdLabel" runat="server"></asp:Label>
</p>
<p>
Driver Name:
<asp:Label ID="DriverNameLabel" runat="server"></asp:Label>
</p>
<asp:DropDownList ID="DriverDropDownList" runat="server" AutoPostBack="True"
DataSourceID="DriverListData" DataTextField="Select Driver"
DataValueField="Column1">
</asp:DropDownList>
<asp:SqlDataSource ID="DriverListData" runat="server" ConnectionString="<%$
ConnectionStrings:ConnectionString %>" ProviderName="<%$
ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="Select
'', 'Select Driver' as 'Select Driver'
from Form_IntranetSharpTransit_DispatchInfo
Union
SELECT DispatchInfoID, Driver + ' - ' + CAST(DispatchInfoID AS
varchar(50)) AS Expr1
FROM Form_IntranetSharpTransit_DispatchInfo
WHERE (Dispatch = ?) AND (DaysOff NOT LIKE '%' + (SELECT DispatchDay
FROM Form_IntranetSharpTransit_DailyDispatch Where DailydispatchID = ?) +
'%') AND (Status LIKE 'Available')">
<SelectParameters>
<asp:QueryStringParameter Name="?" QueryStringField="Theid" />
<asp:QueryStringParameter Name="?" QueryStringField="Theid" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
AutoGenerateEditButton="True" DataSourceID="Store1Data" EditIndex="0"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:TemplateField HeaderText="Store 1:">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"
OnTextChanged="TextBox1_TextChanged" Text='<%# Bind("[Store Number]") %>'>
</asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("[Store
Number]") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="Store1Data" runat="server" ConnectionString="<%$
ConnectionStrings:ConnectionString %>" ProviderName="<%$
ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT
(SELECT Store
FROM Form_IntranetSharpTransit_TourPlan
WHERE (TourPlanID =
Form_IntranetSharpTransit_DispatchInfo_1.Store1)) AS 'Store Number',
Location1, Pro1, Store1Export
FROM Form_IntranetSharpTransit_DispatchInfo AS
Form_IntranetSharpTransit_DispatchInfo_1
WHERE (DispatchInfoID = ?)">
<SelectParameters>
<asp:ControlParameter ControlID="DriverDropDownList" Name="?"
PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
我只想要用編輯按鈕來顯示錶格。點擊編輯按鈕後,我希望表格中的標籤成爲編輯框(如我的模板所示)。在用戶修改編輯框後,他們可以點擊更新按鈕,將更改提交到數據庫並刷新表以顯示更改的值。
這看起來非常簡單,但我現在一直在掙扎大約3個月。
請幫忙。
我想到的第一件事情......你設置'Store1Data'上載?我在考慮'Store1Data'在'Postback'上重置。 –
我沒有設置任何負載,除了一些本地變量,我從URL和一些查詢拉。要解決這個問題的方法是將「Store1Data.DataBind()」這樣的東西放在適當的位置嗎? –
'