Это происходит из-за состояния GridView
.
Когда происходит обратная передача, gridview сохраняет свои данные из ViewState. Таким образом, вы можете либо отключить состояние просмотра для GridView (хорошая практика ??), либо вы называете GridView.DataBind()
в дополнение к SqlDataSource.Databind();
МЕТОД 1 : вызов GridView.DataBind();
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
string command = SqlDataSource1.SelectCommand; // added just for debug purpose
SqlDataSource1.SelectCommand = "SELECT * from tblCourse where
name='"+textbox1.text+"'";
SqlDataSource1.DataBind();
gridview1.DataBind();
}
}
МЕТОД 2 : отключить режим просмотра для GridView ( Это хорошая практика? ). Когда вы устанавливаете это false
, вам НЕ нужно звонить GridView.DataBind()
в вашем page_Load
, как показано выше в МЕТОДЕ 1.
<asp:GridView runat="server" ID="gridview1" EnableViewState="false" ... />
Теперь приходит часть, о которой нужно позаботиться: *
Убедитесь, что в вашем новом запросе также присутствуют <asp:BoundField>
или вообще любые поля, объявленные и связанные с GridView
, в противном случае будет выдано сообщение об ошибке, похожее на приведенное ниже:
A field or property with the name 'ID' was not found on the selected data source