GridView在选择编辑和更新时消失

时间:2014-06-08 14:48:09

标签: asp.net gridview

我有一个带有sql Source的GridView,它绑定到一个搜索框。问题是在Postback上GridView消失了。我曾尝试在PageLoad事件中使用DataBind GridView,但问题是数据来自搜索框,因此On Postback会取出搜索框的值并搜索它。

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Archiv.aspx.cs" Inherits="AutoVerwaltungASP.Archiv" %>

    &lt;%@ Register Assembly =“AjaxControlToolkit”Namespace =“AjaxControlToolkit”TagPrefix =“cc1”%&gt;

<asp:TextBox id="searchbox" Value="Search..." runat="server" ForeColor="Gray" onblur="if(this.value=='')this.value=this.defaultValue;" onfocus="if(this.value==this.defaultValue)this.value='';"  />
&nbsp;
<asp:Button Text="Suchen" runat="server" ID="btnSearch" OnClick="btnSearch_Click" Height="34px" Width="90px" Font-Size="Small"/>
<asp:Button Text="Reset" runat="server" ID="btnClear" OnClick="btnClear_Click" Height="34px" Width="90px" Font-Size="Small"/>


<cc1:AutoCompleteExtender ServiceMethod="markensuchen"
    MinimumPrefixLength="2"
    CompletionInterval="100" EnableCaching="false" CompletionSetCount="10"
    TargetControlID="searchbox"
    ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
</cc1:AutoCompleteExtender>

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataSourceID="SqlDataSourceAutos" ForeColor="Black" GridLines="Vertical" DataKeyNames="m_id"  >
    <AlternatingRowStyle BackColor="White" />
    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
        <asp:BoundField DataField="m_id" HeaderText="m_id" SortExpression="m_id" InsertVisible="False" ReadOnly="True" />
        <asp:BoundField DataField="m_name" HeaderText="m_name" SortExpression="m_name" />
        <asp:BoundField DataField="m_h_id" HeaderText="m_h_id" SortExpression="m_h_id" />
    </Columns>
    <FooterStyle BackColor="#CCCC99" />
    <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
    <RowStyle BackColor="#F7F7DE" />
    <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
    <SortedAscendingCellStyle BackColor="#FBFBF2" />
    <SortedAscendingHeaderStyle BackColor="#848384" />
    <SortedDescendingCellStyle BackColor="#EAEAD3" />
    <SortedDescendingHeaderStyle BackColor="#575357" />

</asp:GridView>

<asp:SqlDataSource ID="SqlDataSourceAutos" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [m_id], [m_name], [m_h_id] FROM [marke]" FilterExpression="m_name LIKE '%{0}%'" ConflictDetection="CompareAllValues" DeleteCommand="DELETE FROM [marke] WHERE [m_id] = @original_m_id AND [m_name] = @original_m_name AND [m_h_id] = @original_m_h_id" InsertCommand="INSERT INTO [marke] ([m_name], [m_h_id]) VALUES (@m_name, @m_h_id)" OldValuesParameterFormatString="original_{0}" UpdateCommand="UPDATE [marke] SET [m_name] = @m_name, [m_h_id] = @m_h_id WHERE [m_id] = @original_m_id AND [m_name] = @original_m_name AND [m_h_id] = @original_m_h_id" >
    <DeleteParameters>
        <asp:Parameter Name="original_m_id" Type="Int32" />
        <asp:Parameter Name="original_m_name" Type="String" />
        <asp:Parameter Name="original_m_h_id" Type="Int32" />
    </DeleteParameters>
    <FilterParameters>
    <asp:ControlParameter Name="m_name" ControlID="searchbox" PropertyName="Text" />
    </FilterParameters>
    <InsertParameters>
        <asp:Parameter Name="m_name" Type="String" />
        <asp:Parameter Name="m_h_id" Type="Int32" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="m_name" Type="String" />
        <asp:Parameter Name="m_h_id" Type="Int32" />
        <asp:Parameter Name="original_m_id" Type="Int32" />
        <asp:Parameter Name="original_m_name" Type="String" />
        <asp:Parameter Name="original_m_h_id" Type="Int32" />
    </UpdateParameters>
</asp:SqlDataSource>

public partial class Archiv : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            GridView1.DataBind();
        }    

    }

    [System.Web.Script.Services.ScriptMethod()]
    [System.Web.Services.WebMethod]
    public static List<string> markensuchen(string prefixText, int count)
    {
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager
                    .ConnectionStrings["ConnectionString"].ConnectionString;
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "select m_name from marke where " +
                "m_name like @searchbox + '%'";
                cmd.Parameters.AddWithValue("@searchbox", prefixText);
                cmd.Connection = conn;
                conn.Open();
                List<string> marken = new List<string>();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        marken.Add(sdr["m_name"].ToString());
                    }
                }
                conn.Close();
                return marken;
            }
        }
    }



    private string SearchString = "";
    public string HighlightText(string InputTxt)
    {
        string Search_Str = searchbox.Text;
        // Setup the regular expression and add the Or operator.
        Regex RegExp = new Regex(Search_Str.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase);
        // Highlight keywords by calling the
        //delegate each time a keyword is found.
        return RegExp.Replace(InputTxt, new MatchEvaluator(ReplaceKeyWords));
    }

    public string ReplaceKeyWords(Match m)
    {
        return ("<span class=highlight>" + m.Value + "</span>");
    }


    protected void btnSearch_Click(object sender, EventArgs e)
    {
        SearchString = searchbox.Text;
    }

    protected void btnClear_Click(object sender, EventArgs e)
    {
        searchbox.Text = "";
        SearchString = "";
        GridView1.DataBind();
    }


}

}

0 个答案:

没有答案