How can I keep my variable all the time without global variables?
===

I have two GridViews. I've got method GetGeneralDiagnosis which returns a list of all diagnosis:

CODE	DIAGNOSIS<br>
F50	Eating disorders<br>
F51	Nonorganic sleep disorders

and method GetSpecificDiagnosis which returns more specific list:

CODE	DIAGNOSIS<br>
F50.0	Anorexia nervosa<br>
F50.1	Atypical anorexia nervosa<br>
F51.0	Nonorganic insomnia<br>
F51.1	Nonorganic hypersomnia <br>

Now I've got method which bind SPECIFIC DIAGNOSIS to second GridView according to GENERAL DIAGNOSIS from first GridView .

    protected void gvGeneralDiagnosis_SelectedIndexChanged(object sender, EventArgs e)
    {
        string generalDiagnosis = gvGeneralDiagnosis.DataKeys[gvGeneralDiagnosis.SelectedIndex].Values["ICD10Name"].ToString(); 
        var ICD10 = Visit.GetSpecificDiagnosis();   // here I'm getting data from database
        gvSpecificDiagnosis.DataSource = ICD10.Where(i => i.ICD10Code.Contains(generalDiagnosis)).Select(i => new { i.ICD10Name, i.ICD10Code });
        gvSpecificDiagnosis.DataBind();
    }

I don't want to connect to database each time selected index is changed. How can i get my list "var ICD10 = Visit.GetSpecificDiagnosis()" only once? I heard that global variables are very bad idea, so how can I do that in another way?